phildini / thanks

Finding ways to fund the packages you use.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pipfile support

eblume opened this issue · comments

  • Thanks version: 0.0.7
  • Python version: 3.6.2
  • Operating System: Linux ... 4.10.0-38-generic #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

Description

I'd like to be able to run thanks on Pipfile, as I do not have a requirements.txt and track that in Pipfile instead. The documentation for Pipfile is at: https://github.com/pypa/pipfile

What I Did

$ thanks Pipfile
Loading data about contributors...
Traceback (most recent call last):
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/bin/thanks", line 11, in <module>
    sys.exit(main())
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/thanks/cli.py", line 14, in main
    Thanks(debug=debug).find_package_roles(requirements)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/thanks/thanks.py", line 29, in __init__
    for package in pip.get_installed_distributions():
AttributeError: module 'pip' has no attribute 'get_installed_distributions'

The above error is actually caused by having pip==10.0.1. I'll file that separately.

The actual error is:

└> thanks Pipfile
Loading data about contributors...
Scanning your requirements file...
Traceback (most recent call last):
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 90, in __init__
    req = REQUIREMENT.parseString(requirement_string)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 1617, in parseString
    raise exc
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 1607, in parseString
    loc, tokens = self._parse( instring, 0 )
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 1379, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 3376, in parseImpl
    loc, exprtokens = e._parse( instring, loc, doActions )
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 1379, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 3698, in parseImpl
    return self.expr._parse( instring, loc, doActions, callPreParse=False )
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 1379, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 3359, in parseImpl
    loc, resultlist = self.exprs[0]._parse( instring, loc, doActions, callPreParse=False )
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 1383, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/pyparsing.py", line 2670, in parseImpl
    raise ParseException(instring, loc, self.errmsg, self)
pkg_resources._vendor.pyparsing.ParseException: Expected W:(abcd...) (at char 0), (line:1, col:1)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2942, in __init__
    super(Requirement, self).__init__(requirement_string)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 94, in __init__
    requirement_string[e.loc:e.loc + 8]))
pkg_resources.extern.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at "'[[source'"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/bin/thanks", line 11, in <module>
    sys.exit(main())
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/thanks/cli.py", line 14, in main
    Thanks(debug=debug).find_package_roles(requirements)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/thanks/thanks.py", line 35, in find_package_roles
    for req in requirements.parse(reqs):
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/requirements/parser.py", line 50, in parse
    yield Requirement.parse(line)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/requirements/requirement.py", line 220, in parse
    return cls.parse_line(line)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/requirements/requirement.py", line 198, in parse_line
    pkg_req = Req.parse(line)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2988, in parse
    req, = parse_requirements(s)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2935, in parse_requirements
    yield Requirement(line)
  File "/home/erich/.local/share/virtualenvs/hermes-1m2DSN2C/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2944, in __init__
    raise RequirementParseError(str(e))
pkg_resources.RequirementParseError: Invalid requirement, parse error at "'[[source'"

We're moving away from using the internal pip api altogether, and instead going with shelling out to pip list --format json. I mention this because we probably want to do something similar with pipenv.

I will happily welcome PRs that do the "right thing" with pipenv parsing.