pypi_simple
- Update pydantic to v2.0
- Support
700
versions
field added to ProjectPagesize` and
upload_time` fields added to `DistributionPackage- SUPPORTED_REPOSITORY_VERSION increased to
"1.1"
- Removed deprecated functionality:
DistributionPackage.get_digests()
PyPISimple.get_projects()
PyPISimple.get_project_files()
parse_simple_index()
parse_project_page()
parse_links()
- Drop support for Python 3.6
- Support Python 3.11
- IndexPage, ProjectPage, DistributionPackage, and Link have been changed from NamedTuples to dataclasses
- Replaced
DistributionPackage.yanked
with separate ~DistributionPackage.is_yanked and ~DistributionPackage.yanked_reason attributes - parse_filename() now raises an UnparsableFilenameError on unparsable filenames instead of returning a triple of Nones
- PyPISimple.get_project_page() now raises a NoSuchProjectError on 404 responses instead of returning None
- The functions for parsing data into IndexPage and ProjectPage instances have been replaced with classmethods:
parse_repo_index_page()
→ IndexPage.from_html()parse_repo_index_json()
→ IndexPage.from_json_data()parse_repo_index_response()
→ IndexPage.from_response()parse_repo_links()
→ RepositoryPage.from_html()parse_repo_project_page()
→ ProjectPage.from_html()parse_repo_project_json()
→ ProjectPage.from_json_data()parse_repo_project_response()
→ ProjectPage.from_response()
- Add a RepositoryPage class for representing the return value of
parse_repo_links()
(now called RepositoryPage.from_html()) - Renamed
DistributionPackage.from_pep691_details()
to ~DistributionPackage.from_json_data() - PyPISimple.stream_project_names() now accepts JSON responses
- Use pydantic internally to parse JSON responses
- Added constants for passing to PyPISimple and its methods in order to specify the
Accept
header to send
- Support Python 3.10
- Support
691
- Send
Accept
headers in requests (except for ~PyPISimple.stream_project_names()) listing both the new JSON format and the old HTML format parse_repo_project_response()
andparse_repo_index_response()
now support both the JSON and HTML formats- Add
parse_repo_index_json()
andparse_repo_project_json()
functions - Gave DistributionPackage a
from_pep691_details()
classmethod - DistributionPackage.has_metadata will now be None if not specified by a JSON response
- DistributionPackage.metadata_url is now always non-None
- Send
- Gave DistributionPackage a ~DistributionPackage.digests attribute
- The
get_digests()
method of DistributionPackage is now deprecated; use ~DistributionPackage.digests instead - Digest fragments are now removed from DistributionPackage.url when parsing HTML responses
- The
- Warn on encountering a repository version with a greater minor version than expected
- Gave PyPISimple a ~PyPISimple.download_package() method
- Support
658
by adding ~DistributionPackage.has_metadata, ~DistributionPackage.metadata_url, and ~DistributionPackage.metadata_digests attributes to DistributionPackage
- Support Python 3.9
- PyPISimple is now usable as a context manager that will close the session on exit
- Drop support for Python 2.7, Python 3.4, and Python 3.5
- DistributionPackage.has_sig is now None if the package repository does not report this information
- Added type annotations
- Moved documentation from README file to a Read the Docs site
- Added new methods to `PyPISimple`:
- ~PyPISimple.get_index_page() — Returns an IndexPage instance with a
projects: List[str]
attribute plus other attributes for repository metadata - ~PyPISimple.get_project_page() — Returns a ProjectPage instance with a
packages: List[DistributionPackage]
attribute plus other attributes for repository metadata - ~PyPISimple.stream_project_names() — Retrieves project names from a repository using a streaming request
- ~PyPISimple.get_index_page() — Returns an IndexPage instance with a
- New utility functions:
parse_repo_links()
— Parses an HTML page and returns a pair of repository metadata and a list of Link objectsparse_repo_project_page()
— Parses a project page and returns a ProjectPage instanceparse_repo_project_response()
— Parses a requests.Response object containing a project page and returns a ProjectPage instance- parse_links_stream() — Parses an HTML page as stream of bytes or str and returns a generator of Link objects
- parse_links_stream_response() — Parses a streaming requests.Response object containing an HTML page and returns a generator of Link objects
parse_repo_index_page()
— Parses a simple repository index/root page and returns an IndexPage instanceparse_repo_index_response()
— Parses a requests.Response object containing an index page and returns an IndexPage instance
- The following functions & methods are now deprecated and will be removed in a future version:
PyPISimple.get_projects()
PyPISimple.get_project_files()
parse_simple_index()
parse_project_page()
parse_links()
- Support Warehouse's
X-PyPI-Last-Serial
header by attaching the value to the objects returned by ~PyPISimple.get_index_page() and ~PyPISimple.get_project_page() - Support
629
by attaching the repository version to the objects returned by ~PyPISimple.get_index_page() and ~PyPISimple.get_project_page() and by raising an UnsupportedRepoVersionError when a repository with an unsupported version is encountered
- Support Python 3.8
- DistributionPackage.sig_url is now always non-None, as Warehouse does not report proper values for ~DistributionPackage.has_sig
- The PyPISimple constructor now takes an optional
session
argument which can be used to specify a requests.Session object with more complicated configuration than just authentication - Support for PEP 592; DistributionPackage now has a
yanked
attribute
- Publicly (i.e., in the README) document the utility functions
- Gave PyPISimple an
auth
parameter for specifying login/authentication details
- When fetching the list of files for a project, the project name is now used to resolve ambiguous filenames.
- The filename parser now requires all filenames to be all-ASCII (except for wheels).
- The filename parser now rejects invalid project names, blatantly invalid versions, and non-ASCII digits.
- RPM packages are now recognized.
Initial release