Comments (1)
Hi Lada-Gagina. I'm happy to answer questions. I do only check Github intermittently, so that's why there's sometimes a delay.
Although there are some cases where pkg_resources loads the version from the filename, there are other places where it loads the version from the metadata.
There are some cases where a version number isn't available or accurate in the metadata file, so importlib metadata attempts to rely on the metadata as the canonical source for all metadata, including version. Another reason for not relying on the filename is that the Python import system offers extensible interfaces for package providers such that the packages and their metadata can exist without a file system at all, where the metadata could be stored in a database for example.
If I had to guess, I expect the reason that pkg_resources
relied on the version in the filename was for efficiency - if one can assume the version is in the filename, it can save many stat and read operations to extract the version from the metadata. Unfortunately, that's just not a reliable source of truth, so it's no longer used.
I hope that answers the question. I'll close this for now, but feel free to follow-up if needed.
from importlib_metadata.
Related Issues (20)
- Provide a 'diagnose' routine to help users inspect broken environments HOT 1
- ContextualVersionConflict error on jupyter notebook HOT 1
- pypy test has started failing HOT 12
- Rely on zipfile.Path (where viable) HOT 1
- Backport docs changes HOT 1
- Invalid annotation in `SimplePath` protocol HOT 2
- Change build backend to flit-core? HOT 1
- 6.8.0: pytest is failing in tests/test_api.py::APITests::test_prefix_not_matched` unit HOT 3
- PackageNotFoundError No package metadata was found for <myproject> HOT 1
- Provide a helper for "is distribution present" HOT 2
- Mypy tests failing on Windows only HOT 1
- 6.9.0: `DiscoveryTests.test_package_discovery` fails HOT 6
- distributions() finds two packages for editable installs HOT 2
- MetadataPathFinder has `find_distributions` as a classmethod in CPython HOT 1
- Intersphinx mapping for stdlib version
- API incompatibility with `importlib.metadata` (or at least the API is not type-safe?)
- AttributeError changed to AssertionError for invalid identifiers
- Ensure stale empty python module directories don't break the build
- 7.2.0: pytest fails in exercises.py units HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from importlib_metadata.