Cleanup vendored dependencies#25
Conversation
5168c49 to
a7fdee6
Compare
| __vendor_site__ = (Path(__file__).parent / "_vendor").as_posix() | ||
|
|
||
| if __vendor_site__ not in sys.path: | ||
| sys.path.insert(0, __vendor_site__) |
There was a problem hiding this comment.
While I agree it would be better in theory, I wonder if this won't conflict with what we do in Poetry, and if the vendors of poetry-core will not take precedence.
There was a problem hiding this comment.
Good question, I want to do a bit more testing on this one actually. We could move it into poetry/__init__.py. Although, I am not a 100% on the ordering.
One thing I was wondering if we could provide a kind of proxy instead that can be smart enough to pick system one if the vendor site is not available. That would mean it would achieve what we want, while maintaining explicit imports.
There was a problem hiding this comment.
For posterity, if the sys path option does need to be replaced later. This can be an alternative.
import sys
import importlib
from poetry.core.utils._compat import Path
__all__ = []
__vendored__ = {}
try:
# poor developer's requirements parser
with open(Path(__file__).parent / "vendor.txt") as f:
for line in f.readlines():
name, version = line.split("==")
__vendored__[name] = version
module_name = "poetry.core._vendor.{}".format(name)
try:
locals()[name] = importlib.import_module(module_name)
except ImportError:
locals()[name] = importlib.import_module(name)
sys.modules[module_name] = locals()[name]
__all__.append(name)
except (FileNotFoundError, ValueError, IndexError) as e:
passThere was a problem hiding this comment.
At that point, it might make sense to just switch to using pip's internal helper: pip._vendor:vendored.
54917c8 to
d8ec3ee
Compare
This pull request contains 3 relevant changes to package vendoring.
Relates-to: #2346