diff --git a/.github/workflows/docs-ci.yml b/.github/workflows/docs-ci.yml index a85ae2f380..3b39c48813 100644 --- a/.github/workflows/docs-ci.yml +++ b/.github/workflows/docs-ci.yml @@ -12,7 +12,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: [3.13] + python-version: [3.14] steps: - name: Checkout code diff --git a/.github/workflows/scancode-release.yml b/.github/workflows/scancode-release.yml index 1ab052a598..3d999030a5 100644 --- a/.github/workflows/scancode-release.yml +++ b/.github/workflows/scancode-release.yml @@ -34,7 +34,7 @@ jobs: strategy: fail-fast: true matrix: - pyver: ["3.10", "3.11", "3.12", "3.13"] + pyver: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -74,7 +74,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: "3.13" + python-version: "3.14" - name: Install requirements then build main and mini sdist run: etc/release/scancode-create-pypi-sdist.sh @@ -100,7 +100,7 @@ jobs: strategy: fail-fast: true matrix: - pyver: ["3.10", "3.11", "3.12", "3.13"] + pyver: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -135,7 +135,7 @@ jobs: strategy: fail-fast: true matrix: - pyver: ["3.10", "3.11", "3.12", "3.13"] + pyver: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -170,7 +170,7 @@ jobs: strategy: fail-fast: true matrix: - pyver: ["3.10", "3.11", "3.12", "3.13"] + pyver: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -211,7 +211,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: "3.13" + python-version: "3.14" - name: Build source archive with deps run: etc/release/scancode-create-release-app-sources.sh @@ -240,7 +240,7 @@ jobs: fail-fast: true matrix: os: [ubuntu-24.04, ubuntu-24.04, macos-13, macos-14] - pyver: ["3.10", "3.11", "3.12", "3.13"] + pyver: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -286,7 +286,7 @@ jobs: fail-fast: true matrix: os: [windows-2025, windows-2022] - pyver: ["3.10", "3.11", "3.12", "3.13"] + pyver: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -331,7 +331,7 @@ jobs: fail-fast: true matrix: os: [ubuntu-24.04, ubuntu-24.04] - pyver: ["3.10", "3.11", "3.12", "3.13"] + pyver: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -376,7 +376,7 @@ jobs: fail-fast: true matrix: os: [macos-13, macos-14] - pyver: ["3.10", "3.11", "3.12", "3.13"] + pyver: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -421,7 +421,7 @@ jobs: fail-fast: true matrix: os: [windows-2025, windows-2022] - pyver: ["3.10", "3.11", "3.12", "3.13"] + pyver: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v4 @@ -493,6 +493,12 @@ jobs: name: macos_app_py_3.13 path: dist + - name: Download a single artifact macos_app for python 3.14 + uses: actions/download-artifact@v4 + with: + name: macos_app_py_3.14 + path: dist + - name: Download a single artifact linux_app for python 3.10 uses: actions/download-artifact@v4 with: @@ -517,6 +523,12 @@ jobs: name: linux_app_py_3.13 path: dist + - name: Download a single artifact linux_app for python 3.14 + uses: actions/download-artifact@v4 + with: + name: linux_app_py_3.14 + path: dist + - name: Download a single artifact windows_app for python 3.10 uses: actions/download-artifact@v4 with: @@ -541,6 +553,12 @@ jobs: name: windows_app_py_3.13 path: dist + - name: Download a single artifact windows_app for python 3.14 + uses: actions/download-artifact@v4 + with: + name: windows_app_py_3.14 + path: dist + - name: Mock GH release run: | ls -al dist @@ -561,19 +579,22 @@ jobs: - smoke_test_install_and_run_pypi_wheels_on_posix - publish_to_gh_release runs-on: ubuntu-24.04 + environment: pypi-publish + permissions: + id-token: write defaults: run: shell: bash strategy: fail-fast: false matrix: - dist_names: ["wheels-3.10", "wheels-3.11", "wheels-3.12", "wheels-3.13", sdists] + dist_names: ["wheels-3.10", "wheels-3.11", "wheels-3.12", "wheels-3.13", "wheels-3.13", "sdists"] steps: - name: Set up Python uses: actions/setup-python@v5 with: - python-version: 3.13 + python-version: 3.14 - name: Download a single artifact uses: actions/download-artifact@v4 @@ -587,5 +608,3 @@ jobs: - name: Publish distributions to PyPI uses: pypa/gh-action-pypi-publish@release/v1 - with: - password: ${{ secrets.PYPI_API_TOKEN }} diff --git a/INSTALL.rst b/INSTALL.rst index be86bf95a2..a2db7a4b3f 100644 --- a/INSTALL.rst +++ b/INSTALL.rst @@ -16,7 +16,7 @@ Prerequisites ------------- Before installing ScanCode make sure you have installed these prerequisites. -The main one is to have Python installed version 3.10, 3.11, 3.12 or 3.13. +The main one is to have Python installed version 3.10, 3.11, 3.12, 3.13 or 3.14. - For Linux(Ubuntu): ``sudo apt install python3.10-dev bzip2 xz-utils zlib1g libxml2-dev libxslt1-dev`` diff --git a/README.rst b/README.rst index 9bc2d2e525..7d2ee49774 100644 --- a/README.rst +++ b/README.rst @@ -139,15 +139,15 @@ Installation ============ Before installing ScanCode make sure that you have installed the prerequisites -properly. This means installing Python 3.13 for x86/64 architectures. -We support Python 3.10, 3.11, 3.12 and 3.13. +properly. This means installing Python 3.14 for x86/64 architectures. +We support Python 3.10, 3.11, 3.12, 3.13 and 3.14. See `prerequisites `_ for detailed information on the support platforms and Python versions. There are a few common ways to `install ScanCode `_. -- `**Installation as an application: Install Python 3.13, download a release archive, extract and run**. +- `**Installation as an application: Install Python 3.14, download a release archive, extract and run**. `_ This is the recommended installation method. diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b7fb0baac4..00de505320 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -15,7 +15,7 @@ jobs: parameters: job_name: core_tests image_name: ubuntu-24.04 - python_versions: ['3.13'] + python_versions: ['3.14'] test_suites: misc_and_scancode: | # cli tests are launched below on all OSes @@ -123,7 +123,7 @@ jobs: job_name: ubuntu24_cpython image_name: ubuntu-24.04 python_architecture: x64 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv/bin/pytest -n 2 -vvs tests/scancode/test_cli.py --reruns 2 @@ -132,7 +132,7 @@ jobs: job_name: ubuntu22_cpython image_name: ubuntu-22.04 python_architecture: x64 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv/bin/pytest -n 2 -vvs tests/scancode/test_cli.py --reruns 2 @@ -140,7 +140,7 @@ jobs: parameters: job_name: macos14_cpython image_name: macOS-14 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] python_architecture: x64 test_suites: all: venv/bin/pytest -n 2 -vvs tests/scancode/test_cli.py --reruns 2 @@ -149,7 +149,7 @@ jobs: parameters: job_name: macos13_cpython image_name: macOS-13 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv/bin/pytest -n 2 -vvs tests/scancode/test_cli.py --reruns 2 @@ -167,7 +167,7 @@ jobs: job_name: win2022_cpython image_name: windows-2022 python_architecture: x64 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv\Scripts\pytest -n 2 -vvs tests\scancode\test_cli.py --reruns 2 @@ -180,7 +180,7 @@ jobs: parameters: job_name: ubuntu22_test_all_supported_click_versions image_name: ubuntu-22.04 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] python_architecture: x64 test_suites: click_versions: | @@ -200,7 +200,7 @@ jobs: parameters: job_name: ubuntu22_cpython_latest_from_pip image_name: ubuntu-22.04 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv/bin/pip install --upgrade-strategy eager --force-reinstall --upgrade -e .[testing] && venv/bin/pytest -n 2 -vvs tests/scancode/test_cli.py @@ -208,7 +208,7 @@ jobs: parameters: job_name: ubuntu24_cpython_latest_from_pip image_name: ubuntu-24.04 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv/bin/pip install --upgrade-strategy eager --force-reinstall --upgrade -e .[testing] && venv/bin/pytest -n 2 -vvs tests/scancode/test_cli.py @@ -216,7 +216,7 @@ jobs: parameters: job_name: macos14_cpython_latest_from_pip image_name: macos-14 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv/bin/pip install --upgrade-strategy eager --force-reinstall --upgrade -e .[testing] && venv/bin/pytest -n 2 -vvs tests/scancode/test_cli.py @@ -224,7 +224,7 @@ jobs: parameters: job_name: macos13_cpython_latest_from_pip image_name: macos-13 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv/bin/pip install --upgrade-strategy eager --force-reinstall --upgrade -e .[testing] && venv/bin/pytest -n 2 -vvs tests/scancode/test_cli.py @@ -232,7 +232,7 @@ jobs: parameters: job_name: win2019_cpython_latest_from_pip image_name: windows-2025 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv\Scripts\pip install --upgrade-strategy eager --force-reinstall --upgrade -e .[testing] && venv\Scripts\pytest -n 2 -vvs tests\scancode\test_cli.py @@ -240,7 +240,7 @@ jobs: parameters: job_name: win2022_cpython_latest_from_pip image_name: windows-2022 - python_versions: ['3.10', '3.11', '3.12', '3.13'] + python_versions: ['3.10', '3.11', '3.12', '3.13', '3.14'] test_suites: all: venv\Scripts\pip install --upgrade-strategy eager --force-reinstall --upgrade -e .[testing] && venv\Scripts\pytest -n 2 -vvs tests\scancode\test_cli.py diff --git a/configure b/configure index f4f1c14c2c..fead89e6e3 100755 --- a/configure +++ b/configure @@ -235,7 +235,7 @@ create_virtualenv() { fi $PYTHON_EXECUTABLE "$VIRTUALENV_PYZ" \ - --wheel embed --pip embed --setuptools embed \ + --pip embed --setuptools embed \ --seeder pip \ --never-download \ --no-periodic-update \ diff --git a/configure.bat b/configure.bat index 3a03807385..4663ef06de 100644 --- a/configure.bat +++ b/configure.bat @@ -116,7 +116,7 @@ if not exist "%CFG_BIN_DIR%\python.exe" ( if exist "%CFG_ROOT_DIR%\etc\thirdparty\virtualenv.pyz" ( %PYTHON_EXECUTABLE% "%CFG_ROOT_DIR%\etc\thirdparty\virtualenv.pyz" ^ - --wheel embed --pip embed --setuptools embed ^ + --pip embed --setuptools embed ^ --seeder pip ^ --never-download ^ --no-periodic-update ^ @@ -132,7 +132,7 @@ if not exist "%CFG_BIN_DIR%\python.exe" ( ) ) %PYTHON_EXECUTABLE% "%CFG_ROOT_DIR%\%VIRTUALENV_DIR%\virtualenv.pyz" ^ - --wheel embed --pip embed --setuptools embed ^ + --pip embed --setuptools embed ^ --seeder pip ^ --never-download ^ --no-periodic-update ^ diff --git a/docs/source/getting-started/install.rst b/docs/source/getting-started/install.rst index 2cd09386d1..8a7eda3f7c 100644 --- a/docs/source/getting-started/install.rst +++ b/docs/source/getting-started/install.rst @@ -44,7 +44,7 @@ For advanced usage and experienced users, you can also use any of these mode: Before Installing ----------------- -- ScanCode requires a Python version between 3.10 to 3.13 and is +- ScanCode requires a Python version between 3.10 to 3.14 and is tested on Linux, macOS, and Windows. It should work fine on FreeBSD. .. _system_requirements: diff --git a/etc/scripts/utils_thirdparty.py b/etc/scripts/utils_thirdparty.py index c24b50cb92..6731264707 100755 --- a/etc/scripts/utils_thirdparty.py +++ b/etc/scripts/utils_thirdparty.py @@ -115,13 +115,14 @@ TRACE_ULTRA_DEEP = False # Supported environments -PYTHON_VERSIONS = "310", "311", "312", "313" +PYTHON_VERSIONS = "310", "311", "312", "313", "314" PYTHON_DOT_VERSIONS_BY_VER = { "310": "3.10", "311": "3.11", "312": "3.12", "313": "3.13", + "314": "3.14", } @@ -138,6 +139,7 @@ def get_python_dot_version(version): "311": ["cp311", "cp311m", "abi3"], "312": ["cp312", "cp312m", "abi3"], "313": ["cp313", "cp313m", "abi3"], + "314": ["cp314", "cp314m", "abi3"], } PLATFORMS_BY_OS = { diff --git a/etc/thirdparty/virtualenv.pyz b/etc/thirdparty/virtualenv.pyz index 5e68f00ba0..9cff9708c6 100644 Binary files a/etc/thirdparty/virtualenv.pyz and b/etc/thirdparty/virtualenv.pyz differ diff --git a/etc/thirdparty/virtualenv.pyz.ABOUT b/etc/thirdparty/virtualenv.pyz.ABOUT index 9f13765b3d..701a1d8418 100644 --- a/etc/thirdparty/virtualenv.pyz.ABOUT +++ b/etc/thirdparty/virtualenv.pyz.ABOUT @@ -1,7 +1,7 @@ about_resource: virtualenv.pyz name: get-virtualenv -version: 20.23.0 -download_url: https://github.com/pypa/get-virtualenv/raw/20.23.0/public/virtualenv.pyz +version: 20.25.3 +download_url: https://github.com/pypa/get-virtualenv/blob/20.35.3/public/virtualenv.pyz description: virtualenv is a tool to create isolated Python environments. homepage_url: https://github.com/pypa/virtualenv license_expression: lgpl-2.1-plus AND (bsd-new OR apache-2.0) AND mit AND python AND bsd-new @@ -12,4 +12,4 @@ attribute: yes track_changes: yes package_url: pkg:github/pypa/get-virtualenv@20.23.0#public/virtualenv.pyz notes: this archive has been modified from the original to remove extra - embedded wheels that are not needed as we support only Python 3.7+ \ No newline at end of file + embedded wheels that are not needed as we support only Python 3.10+ \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index 2699cb82ec..2cea954713 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -17,7 +17,7 @@ pep517==0.12.0 pkginfo==1.12.1.2 platformdirs==2.5.2 py==1.11.0 -pytest==7.1.2 +pytest==8.4.2 pytest-forked==1.4.0 pytest-xdist==2.5.0 readme-renderer==35.0 diff --git a/requirements-native.txt b/requirements-native.txt index 54e6b4115c..94ffaabf54 100644 --- a/requirements-native.txt +++ b/requirements-native.txt @@ -1,7 +1,7 @@ -cffi==1.17.1 -cyseq==0.0.2 +cffi==2.0.0 +cyseq==0.1.2 intbitset==4.0.0 -lxml==5.4.0 -MarkupSafe==3.0.2 +lxml==6.0.2 +MarkupSafe==3.0.3 pyahocorasick==2.2.0 -PyYAML==6.0.2 +PyYAML==6.0.3 diff --git a/requirements.txt b/requirements.txt index 4cdb3fdebc..da2f805ab7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,14 +2,13 @@ attrs==25.3.0 banal==1.0.6 beautifulsoup4==4.13.4 binaryornot==0.4.4 -beartype==0.21.0 +beartype==0.22.4 boolean.py==5.0 certifi==2025.6.15 -cffi==1.17.1 +cffi==2.0.0 chardet==5.2.0 charset-normalizer==3.4.2 -click==8.3.0;python_version>='3.10' -click==8.1.7;python_version<'3.10' +click==8.3.0 colorama==0.4.6 commoncode==32.4.0 construct==2.10.70 @@ -37,8 +36,8 @@ javaproperties==0.8.2 Jinja2==3.1.6 jsonstreams==0.6.0 license-expression==30.4.4 -lxml==5.4.0 -MarkupSafe==3.0.2 +lxml==6.0.2 +MarkupSafe==3.0.3 more-itertools==10.7.0 normality==2.6.1 packageurl-python==0.17.1 @@ -60,7 +59,7 @@ Pygments==2.13.0 pymaven-patch==0.3.2 pyparsing==3.2.3 pytz==2022.1 -PyYAML==6.0.2 +PyYAML==6.0.3 rdflib==7.1.4 requests==2.32.4 saneyaml==0.6.1 diff --git a/setup-mini.cfg b/setup-mini.cfg index 2b7196b4a9..fbdd6a95e4 100644 --- a/setup-mini.cfg +++ b/setup-mini.cfg @@ -21,6 +21,7 @@ classifiers = Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 Programming Language :: Python :: 3.13 + Programming Language :: Python :: 3.14 Topic :: Software Development Topic :: Utilities @@ -150,7 +151,7 @@ packages = regipy >= 3.1.0; platform_system == 'Linux' packagedcode_msitools >= 0.101.210706; platform_system == 'Linux' go-inspector >= 0.5.0; platform_system == 'Linux' - rust-inspector >= 0.1.0; platform_system == 'Linux' + rust-inspector >= 0.2.1; platform_system == 'Linux' [options.entry_points] console_scripts = diff --git a/setup.cfg b/setup.cfg index c2fa168ed1..06fe0b7a6d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -21,6 +21,7 @@ classifiers = Programming Language :: Python :: 3.11 Programming Language :: Python :: 3.12 Programming Language :: Python :: 3.13 + Programming Language :: Python :: 3.14 Topic :: Software Development Topic :: Utilities @@ -74,6 +75,7 @@ install_requires = colorama >= 0.3.9 commoncode >= 32.4.0 container-inspector >= 31.0.0 + cyseq >= 0.1.2 debian-inspector >= 31.1.0 dparse2 >= 0.7.0 fasteners @@ -116,7 +118,6 @@ install_requires = typecode >= 30.0.1 typecode[full] >= 30.0.1 extractcode[full] >= 31.0.0 - cyseq >= 0.0.2 [options.packages.find] @@ -152,7 +153,7 @@ packages = regipy >= 3.1.0; platform_system == 'Linux' packagedcode_msitools >= 0.101.210706; platform_system == 'Linux' go-inspector >= 0.5.0; platform_system == 'Linux' - rust-inspector >= 0.1.0; platform_system == 'Linux' + rust-inspector >= 0.2.1; platform_system == 'Linux' [options.entry_points] console_scripts =