#
# spec file for package python-distlib
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%{?sle15_python_module_pythons}
Name:           python-distlib
Version:        0.3.9
Release:        1.4
Summary:        Distribution utilities
License:        Python-2.0
URL:            https://github.com/pypa/distlib
Source:         https://files.pythonhosted.org/packages/source/d/distlib/distlib-%{version}.tar.gz
BuildRequires:  %{python_module pip}
BuildRequires:  %{python_module pytest}
BuildRequires:  %{python_module testsuite}
BuildRequires:  %{python_module wheel}
BuildRequires:  fdupes
BuildRequires:  python-rpm-macros
BuildArch:      noarch
%python_subpackages

%description
Python distribution utilities.

%prep
%autosetup -p1 -n distlib-%{version}

# This test module requires internet access and are unnecessary
sed -i '/from test_locators import LocatorTestCase/d' tests/distlib_tests.py

# Unneeded on Linux
rm distlib/*.exe

%build
%pyproject_wheel

%install
%pyproject_install
%python_expand %fdupes %{buildroot}%{$python_sitelib}

%check
export LANG=en_US.UTF-8
# This file and two tests need internet access
%pytest --ignore tests/test_locators.py -k 'not (test_search or test_package_data)'

%files %{python_files}
%doc CHANGES.rst README.rst
%license LICENSE.txt
%{python_sitelib}/distlib
%{python_sitelib}/distlib-%{version}*-info

%changelog
* Wed Dec  4 2024 John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to 0.3.9
  * Merge #215: preload script wrappers on Windows to assist with a pip issue (thanks,
    Paul Moore).
  * Fix #220: Remove duplicated newline in shebang of windows launcher (thanks. A2uria).
  * Fix #230: Add handling for cross-compilation environments (thanks, Russell Keith-Magee).
  * Fix #224: Do not use the absolute path to cache wheel extensions (thanks, Stewart Miles).
  * Fix #222: Support mounting wheels that use extensions without an EXTENSIONS file (thanks,
    Stewart Miles).
  * Fix #225: Add support for wheel compatibility with the limited API (thanks, Stewart Miles).
- Drop py313-interpreter-repr.patch, merged upstream
* Mon Jul  1 2024 Dirk Müller <dmueller@suse.com>
- add py313-interpreter-repr.patch to fix testsuite with python
  3.13
* Mon Jul  1 2024 Dirk Müller <dmueller@suse.com>
- depend on testsuite
* Tue Dec 19 2023 Dirk Müller <dmueller@suse.com>
- update to 0.3.8:
  * Fix #209: use legacy version implementation for Python
    versions.
  * Fix #204: use symlinks in venv creation during test.
  * Fix #208: handle deprecation removals in Python 3.13.
* Tue Aug  8 2023 Dirk Müller <dmueller@suse.com>
- update to 0.3.7:
  * Handle newlines when parsing metadata.
  * Use version comparison logic for python_full_version.
  * Simplify code with a set comprehension.
  * Fix shebang computation for source builds of Python.
  * Extract tarfiles more safely by incorporating tarfile
    filters.
  * Check for 'has_cert' attribute before using it.
  * Fix #203: Handle parsing of export entries to allow script
    names such as "," or ",foo".
  * Fix #200: Improve conformance to PEP440.
  * In addition to the above, an SPDX license identifier is now
    used.
* Fri Apr 21 2023 Dirk Müller <dmueller@suse.com>
- add sle15_python_module_pythons (jsc#PED-68)
* Thu Apr 13 2023 Matej Cepl <mcepl@suse.com>
- Make calling of %%{sle15modernpython} optional.
* Sat Oct  1 2022 Dirk Müller <dmueller@suse.com>
- update to 0.3.6:
  - scripts
  - Fixed #175: Updated launcher executables to better handle the relationship
    between launcher and child process in the Job API.
  - database
  - Fixed #170: Corrected implementation of ``get_required_dists()``.
  - index
  - Updated coverage pragmas for tests relating to obsolete PyPI APIs.
  - locators
  - Changed the default locator configuration.
  - metadata
  - Updates in support of PEP 643 / Metadata 2.2.
  - scripts
  - Updated launcher executables. Thanks to Michael Bikovitsky for his help with
    the launcher changes.
  - Fixed #164: Improved support for reproducible builds by allowing a fixed
    date/time to be inserted into created .exe files. Thanks to Somber Night for the
    patch.
  - util
  - Fixed #161: Updated test case.
  - wheel
  - Updated to write archive path of RECORD to RECORD instead of staging path.
    Thanks to Pieter Pas for the patch.
  - Fixed #169: Removed usage of deprecated imp module in favour of importlib.
  - Fixed #172: Compute ABI correctly for Python < 3.8.
* Sat Dec 11 2021 Ben Greiner <code@bnavigator.de>
- actually drop remove-backports.patch
* Fri Dec 10 2021 Ben Greiner <code@bnavigator.de>
- update to 0.3.4
  * Fixed #153: Raise warnings in get_distributions() if bad
    metadata seen, but keep going.
  * Fixed #154: Determine Python versions correctly for Python >=
    3.10.
  * Updated launcher executables.
- Drop obsolete remove-backports.patch
* Sun Nov  7 2021 Dirk Müller <dmueller@suse.com>
- update to 0.3.3:
  * Removed splituser() function which wasn't used and is deprecated.
  * Handle version comparisons correctly in environment markers.
  * Handle a single trailing comma following a version.
  * Fix incorrect handling of epochs.
  * Reverted handling of tags for Python >= 3.10
    (use 310 rather than 3_10). This is because PEP 641 was rejected.
  * removed unused regular expression
  * allowed "Obsoletes" in more scenarios, to better handle faulty metadata
    already on PyPI.
  * added entry for SourcelessFileLoader to the finder registry.
  * allowed a trailing comma in constraints, to better handle faulty metadata
  already on PyPI
- drop python-distlib-2048-bit-key.patch (obsolete)
* Wed Feb 10 2021 Pedro Monreal <pmonreal@suse.com>
- Update the test self-signed certificate to use 2048-bit key.
- Add python-distlib-2048-bit-key.patch
* Thu Oct  8 2020 Steve Kowalik <steven.kowalik@suse.com>
- Update to 0.3.1:
  * scripts
    + Fixed #132: Added documentation to help with relative interpreter paths.
    + Fixed #134: Allowed specifying a different target Python version when
    generating scripts.
    + Fixed #135: Exposed the ``enquote_executable`` function previously
    implemented as an internal function.
    + Addressed #138: Improved metadata support for newer metadata versions.
  * wheel
    + Changed the output of flags in entry point definitions.
    + Stopped writing JSON metadata. Only old-style metadata is written now.
- Refreshed remove-backports.patch
* Fri Mar 13 2020 Tomáš Chvátal <tchvatal@suse.com>
- Update to 0.3.0:
  * small bugfixes
- Remove patch merged upstream:
  * correct_large_version_number.patch
* Fri Oct 25 2019 Matej Cepl <mcepl@suse.com>
- Add correct_large_version_number.patch fixing bt#pypa/distlib#129
* Thu Oct 24 2019 Matej Cepl <mcepl@suse.com>
- Skip test_abi tests. bt#pypa/distlib#129
* Fri Sep 13 2019 Tomáš Chvátal <tchvatal@suse.com>
- Update to 0.2.9.post0:
  * updated pypi urls
  * various small bugfixes
- Remove merged patches:
  * pypi-url-update.patch
* Thu Apr  4 2019 John Vandenberg <jayvdb@gmail.com>
- Remove Windows executables
* Mon Mar 25 2019 John Vandenberg <jayvdb@gmail.com>
- Add upstream merged pypi-url-update.patch to replace pypi.python.org
  with pypi.org
* Wed Mar  6 2019 John Vandenberg <jayvdb@gmail.com>
- Convert to single spec
- Activate test suite
- Change license to Python-2.0 to match sdist
- Update URL to https://bitbucket.org/pypa/distlib
- Remove unnecessary build dependency on python-devel
- Add fdupes
- Remove unnecessary backports with remove-backports.patch
- Update to v0.2.8
  * database
    + Fixed #108: Updated metadata scan to look for the METADATA file as well
    as the JSON formats.
  * locators
    + Handled wheel tags and platform-dependent downloads correctly
    in SimpleScrapingLocator.
  * metadata
    + Updated documentation on testing to include information on
    setting PYTHONHASHSEED.
  * scripts
    + Avoided unnecessary newlines in script preambles, which caused
    problems with detecting encoding declarations.
  * util
    + Removed existing files (which might have been symlinks) before
    overwriting.
- from v0.2.7
  * compat
    + cache_from_source is now imported from importlib.util where
    available.
  * database
    + InstalledDistributions now have a modules attribute which
    is a list of top-level modules as read from top_level.txt, if that is in
    the distribution info.
  * locators
    + Fixed #103: Thanks to Saulius Žemaitaitis for the patch.
  * metadata
    + Added support for PEP 566 / Metadata 1.3.
  * scripts
    + Updated launcher binaries.
- from v0.2.6
  * compat
    + Updated to handle a case where sys.getfilesystemencoding()
    returns None.
  * database
    + Eliminated a crash in EggInfoDistribution.list_distinfo_files()
    which was caused by trying to open a non-existent file.
    + Handled a case where an installed distribution didn't have 'Provides:'
    metadata.
  * locators
    + SimpleScrapingLocator no longer fails prematurely when scraping
    links due to invalid versions.
  * markers
    + Improved error messages issued when interpreting markers
  * scripts
    + Improved the shebangs written into installed scripts when the interpreter
    path is very long or contains spaces (to cater for a limitation in shebang
    line parsing on Linux)
    + Updated launcher binaries.
  * Numerous test refinements
- from v0.2.5
  * general
    + Changed regular expressions to be compatible with 3.6 as regards escape
    sequences.
    + Closed some resource leaks related to XML-RPC proxies.
    + Removed Python 2.6 from the support list.
  * locators
    + Made downloadability a factor in scoring URLs for preferences.
  * markers
    + Replaced the implementation with code which parses requirements in
    accordance with PEP 508 and evaluates marker expressions according to
    PEP 508.
  * util
    + Changed _csv_open to use utf-8 across all platforms on Python 3.x.
  * wheel
    + Changed to look for metadata in metadata.json as well as pydist.json.
  * version
    + Updated requirement parsing in version matchers to use the new
    PEP 508-compliant code.
  * Numerous test refinements
- from v0.2.4
  * compat
    + Updated to not fail on import if SSL is unavailable.
  * index
    + Switch from using gpg in preference to gpg2 for signing. This is
    to avoid gpg2's behaviour of prompting for passwords, which interferes
    with the tests on some machines.
  * locators
    + Changed project name comparisons to follow PEP 503.
    + Added errors queue to Locator.
  * manifest
    + Changed match logic to work under Python 3.6, due to differences in
    how fnmatch.translate behaves.
  * resources
    + Updated finder registry logic to reflect changes in Python 3.6.
  * scripts
    + Fixed regular expression in generated script boilerplate.
  * util
    + Updated to not fail on import if SSL is unavailable.
    + Added normalize_name for project name comparisons using PEP 503.
  * tests
    + Updated to skip certain tests if SSL is unavailable.
    + Numerous other test refinements.
- from v0.2.3
  * util
    + Changed get_executable to return Unicode rather than bytes.
    + Fixed #84: Allow + character in output script names.
    + Relaxed too-stringent test looking for application/json in headers.
  * wheel
    + sorted the entries in RECORD before writing to file.
  * Numerous test refinements.
- from v0.2.2
  * database
    + Added support for detecting distributions installed by wheel
    versions >= 0.23 (which use metadata.json rather than pydist.json).
  * locators
    + Updated default PyPI URL to https://pypi.python.org/pypi
  * metadata
    + Updated to use different formatting for description field for V1.1
    metadata.
    + Corrected "classifier" to "classifiers" in the mapping for V1.0
    metadata.
  * scripts
    + Improved support for Jython when quoting executables in output scripts.
  * util
    + Made the internal URL used for extended metadata fetches
    configurable via a module attribute.
    + Improved entry point parsing to handle leading spaces in
    ini-format files.
  * docs
    + Numerous documentation updates, not detailed further here.
  * tests
    + renamed environment variable SKIP_SLOW to SKIP_ONLINE in tests and
    applied to some more tests.
    + Numerous other test refinements.
- from v0.2.1
  * locators
    + Return a Distribution instance or None from ``locate()``.
    + Skipped special keys when looking for versions.
    + Improved behaviour of PyPIJSONLocator to be analogous to that of other
    locators.
  * resource
    + Added resource iterator functionality.
  * scripts
    + Updated launchers to decode shebangs using UTF-8. This allows
    non-ASCII pathnames to be correctly handled.
    + Ensured that the executable written to shebangs is normcased.
    + Changed ScriptMaker to work better under Jython.
  * util
    + Changed the mode setting method to work better under Jython.
    + Changed get_executable() to return a normcased value.
  * wheel
    + Handled multiple-architecture wheel filenames correctly.
  * docs
    + Numerous documentation updates, not detailed further here.
  * Numerous test refinements.
* Sun Jul  5 2015 tbechtold@suse.com
- Initial packaging of v0.2.0