Mirror with configuration files does not support quoting, or credentials
Mythra opened this issue · 0 comments
Hi,
I was attempting to setup this project in an environment where we want to fetch the nodejs dependencies from Artifactory our own internal mirror as egress is locked down. Unfortunately, we are not able to use the configuration file as is mentioned in the README.
When configuring the URL as mentioned in the readme with quotes:
[nodeenv]
mirror = 'https://user:pass@artifactory.instance/artifactory/generic-nodejs-mirror'
You get this lovely error, as the quotes aren't stripped
$ poetry run pyright
Traceback (most recent call last):
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 1519, in <module>
main()
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 1093, in main
args.node = get_last_stable_node_version()
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 1026, in get_last_stable_node_version
return _get_versions_json()[0]['version'].lstrip('v')
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 1002, in _get_versions_json
response = urlopen('%s/index.json' % src_base_url)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 624, in urlopen
return urllib2.urlopen(req)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 216, in urlopen
return opener.open(url, data, timeout)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 519, in open
response = self._open(req, data)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 541, in _open
return self._call_chain(self.handle_open, 'unknown',
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 496, in _call_chain
result = func(*args)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 1419, in unknown_open
raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: 'https>
Traceback (most recent call last):
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\Scripts\pyright.exe\__main__.py", line 7, in <module>
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\cli.py", line 81, in entrypoint
sys.exit(main(sys.argv[1:]))
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\cli.py", line 21, in main
return run(*args, **kwargs).returncode
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\cli.py", line 38, in run
npx = node.version('npx')
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 118, in version
proc = run(target, '--version', stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 97, in run
binary = _ensure_available(target)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 36, in _ensure_available
return Binary(path=_ensure_node_env(target), strategy=Strategy.NODEENV)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 63, in _ensure_node_env
_install_node_env()
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 90, in _install_node_env
subprocess.run(args, check=True)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 524, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['C:\\Users\\ccoan\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\<project-name>-LETqD2Zl-py3.10\\Scripts\\python.exe', '-m', 'nodeenv', 'C:\\Users\\ccoan\\AppData\\Local\\Temp\\pyright-python.ccoan\\env']' returned non-zero exit status 1.
The key line being: urllib.error.URLError: <urlopen error unknown url type: 'https>
The same also happens with double quotes (although with a double quote in the error instead of a single quote). At first I thought okay we could just strip the quotes 'what could go wrong'. Unfortunately, the configuration parser than gets confused by the credentials:
[nodeenv]
mirror = https://user:pass@artifactory.instance/...
Produces this error
Traceback (most recent call last):
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 889, in _get_hostport
port = int(host[i+1:])
ValueError: invalid literal for int() with base 10: '<password>@artifactory.instance'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 1519, in <module>
main()
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 1093, in main
args.node = get_last_stable_node_version()
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 1026, in get_last_stable_node_version
return _get_versions_json()[0]['version'].lstrip('v')
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 1002, in _get_versions_json
response = urlopen('%s/index.json' % src_base_url)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\nodeenv.py", line 624, in urlopen
return urllib2.urlopen(req)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 216, in urlopen
return opener.open(url, data, timeout)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 519, in open
response = self._open(req, data)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 536, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 496, in _call_chain
result = func(*args)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 1391, in https_open
return self.do_open(http.client.HTTPSConnection, req,
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\urllib\request.py", line 1317, in do_open
h = http_class(host, timeout=req.timeout, **http_conn_args)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1409, in __init__
super(HTTPSConnection, self).__init__(host, port, timeout,
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 851, in __init__
(self.host, self.port) = self._get_hostport(host, port)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 894, in _get_hostport
raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
http.client.InvalidURL: nonnumeric port: '<password>@artifactory.instance'
Traceback (most recent call last):
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in _run_code
exec(code, run_globals)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\Scripts\pyright.exe\__main__.py", line 7, in <module>
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\cli.py", line 81, in entrypoint
sys.exit(main(sys.argv[1:]))
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\cli.py", line 21, in main
return run(*args, **kwargs).returncode
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\cli.py", line 38, in run
npx = node.version('npx')
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 118, in version
proc = run(target, '--version', stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 97, in run
binary = _ensure_available(target)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 36, in _ensure_available
return Binary(path=_ensure_node_env(target), strategy=Strategy.NODEENV)
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 63, in _ensure_node_env
_install_node_env()
File "C:\Users\ccoan\AppData\Local\pypoetry\Cache\virtualenvs\<project-name>-LETqD2Zl-py3.10\lib\site-packages\pyright\node.py", line 90, in _install_node_env
subprocess.run(args, check=True)
File "C:\Users\ccoan\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 524, in run
raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['C:\\Users\\ccoan\\AppData\\Local\\pypoetry\\Cache\\virtualenvs\\<project-name>-LETqD2Zl-py3.10\\Scripts\\python.exe', '-m', 'nodeenv', 'C:\\Users\\ccoan\\AppData\\Local\\Temp\\pyright-python.ccoan\\env']' returned non-zero exit status 1.
The key lines being: ValueError: invalid literal for int() with base 10: '<password>@artifactory.instance'
, and: raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
.