-------------------
- 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 `is_yanked` and
`yanked_reason` attributes
- `parse_filename()` now raises an `UnparsableFilenameError` on unparsable
filenames instead of returning a triple of `None`s
- `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 `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