Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nonexisting packages throw error #85

Closed
MathijsNL opened this issue Dec 10, 2019 · 1 comment · Fixed by #88
Closed

Nonexisting packages throw error #85

MathijsNL opened this issue Dec 10, 2019 · 1 comment · Fixed by #88
Labels
bug Something isn't working good first issue Good for newcomers

Comments

@MathijsNL
Copy link

Commit: ae3b811

Steps to reproduce:

micropy init testproject
micropy install nonexistingpackage

This gives some errors, leading back to utils/helpers.py in function:
def get_package_meta(name, spec=None):

279 url = f"https://pypi.org/pypi/{name}/json"
280 resp = requests.get(url)

I don't know what the right moment would be to check if the package exists.

Log:

[2019-12-10 12:21:51] INFO: micropy: Installing Packages
[2019-12-10 12:21:51] DEBUG: testproject: Hook Resolved: add_package -> HookProxy(add_package)
[2019-12-10 12:21:51] DEBUG: hookproxy(add_package): add_package proxied to [_hook__add_package__dev_False@<micropy.project.modules.packages.PackagesModule object at 0x00000283D07ABF60>]
[2019-12-10 12:21:51] DEBUG: testproject: adding new dependency: nonexistingpackage
[2019-12-10 12:21:51] DEBUG: <packagedependencysource nonexistingpackage>: Starting new HTTPS connection (1): pypi.org:443
[2019-12-10 12:21:51] DEBUG: <packagedependencysource nonexistingpackage>: https://pypi.org:443 "GET /pypi/nonexistingpackage/json HTTP/1.1" 301 227
[2019-12-10 12:21:52] DEBUG: <packagedependencysource nonexistingpackage>: https://pypi.org:443 "GET /pypi/nonexistingpackage/json/ HTTP/1.1" 404 1839

Traceback:

Traceback (most recent call last):
  File "c:\users\user\appdata\local\programs\python\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\user\appdata\local\programs\python\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\user\AppData\Local\Programs\Python\Python37\Scripts\micropy.exe\__main__.py", line 7, in <module>
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\click\core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\click\core.py", line 717, in main
    rv = self.invoke(ctx)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\click\core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\click\core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\click\decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\click\core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\micropy\cli.py", line 168, in install
    project.add_package(pkg, dev=dev)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\micropy\project\modules\modules.py", line 147, in __call__
    return getattr(*proxy)(*args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\micropy\project\modules\modules.py", line 96, in wrapper
    return func(*args, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\micropy\project\modules\packages.py", line 136, in add_package
    source = create_dependency_source(package, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\micropy\packages\__init__.py", line 43, in create_dependency_source
    return PackageDependencySource(pkg, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\micropy\packages\source_package.py", line 30, in __init__
    self._meta: dict = utils.get_package_meta(str(self.package), self.package.pretty_specs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\micropy\utils\helpers.py", line 283, in get_package_meta
    data = resp.json()
  File "c:\users\user\appdata\local\programs\python\python37\lib\site-packages\requests\models.py", line 897, in json
    return complexjson.loads(self.text, **kwargs)
  File "c:\users\user\appdata\local\programs\python\python37\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "c:\users\user\appdata\local\programs\python\python37\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "c:\users\user\appdata\local\programs\python\python37\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 7 column 1 (char 6)
@BradenM BradenM added the bug Something isn't working label Dec 10, 2019
@BradenM BradenM added this to the Release v3.2.0 milestone Dec 10, 2019
@BradenM BradenM added the good first issue Good for newcomers label Dec 10, 2019
@BradenM
Copy link
Owner

BradenM commented Dec 10, 2019

Thanks!

Looks like I forgot to validate the package url. Best move would probably be using utils.is_downloadable in utils.get_package_meta to raise an exception that can be caught and handled in the cli module.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working good first issue Good for newcomers
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants