Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-pyppmd for openSUSE:Factory checked in at 2023-12-15 21:49:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-pyppmd (Old) and /work/SRC/openSUSE:Factory/.python-pyppmd.new.25432 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyppmd" Fri Dec 15 21:49:30 2023 rev:3 rq:1133184 version:1.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-pyppmd/python-pyppmd.changes 2023-06-27 23:18:19.391976527 +0200 +++ /work/SRC/openSUSE:Factory/.python-pyppmd.new.25432/python-pyppmd.changes 2023-12-15 21:49:42.515501315 +0100 @@ -1,0 +2,10 @@ +Thu Dec 14 20:51:45 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 1.1.0: + * Add Python 3.12 support + * Minimum required python to be 3.8 + * Export PPMD8_RESTORE_METHOD_* constants + * Drop github actions workflows + * README: Add SPDX identifier + +------------------------------------------------------------------- Old: ---- pyppmd-1.0.0.tar.gz New: ---- pyppmd-1.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-pyppmd.spec ++++++ --- /var/tmp/diff_new_pack.LKHF8i/_old 2023-12-15 21:49:43.395533695 +0100 +++ /var/tmp/diff_new_pack.LKHF8i/_new 2023-12-15 21:49:43.395533695 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-pyppmd # -# Copyright (c) 2022 SUSE LLC +# Copyright (c) 2023 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,18 +16,16 @@ # -%define skip_python2 1 %{?sle15_python_module_pythons} Name: python-pyppmd -Version: 1.0.0 +Version: 1.1.0 Release: 0 Summary: PPMd compression/decompression library License: LGPL-2.1-or-later URL: https://codeberg.org/miurahr/pyppmd Source: https://files.pythonhosted.org/packages/source/p/pyppmd/pyppmd-%{version}.tar.gz -BuildRequires: %{python_module devel >= 3.6} +BuildRequires: %{python_module devel >= 3.8} BuildRequires: %{python_module pip} -BuildRequires: %{python_module setuptools >= 58.0} BuildRequires: %{python_module setuptools_scm >= 6.0.1} BuildRequires: %{python_module wheel} BuildRequires: fdupes ++++++ pyppmd-1.0.0.tar.gz -> pyppmd-1.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/.flake8 new/pyppmd-1.1.0/.flake8 --- old/pyppmd-1.0.0/.flake8 1970-01-01 01:00:00.000000000 +0100 +++ new/pyppmd-1.1.0/.flake8 2023-11-05 07:13:42.000000000 +0100 @@ -0,0 +1,4 @@ +[flake8] +max-line-length = 125 +extend-ignore = E203, W503 +ignore = F841 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/CMakeLists.txt new/pyppmd-1.1.0/CMakeLists.txt --- old/pyppmd-1.0.0/CMakeLists.txt 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/CMakeLists.txt 2023-11-05 07:13:42.000000000 +0100 @@ -5,7 +5,7 @@ set(CMAKE_CXX_STANDARD 17) # TARGET PYTHON version -set(PY_VERSION 3.8) +set(PY_VERSION 3.12) set(Python_FIND_IMPLEMENTATIONS CPython) #set(Python_FIND_IMPLEMENTATIONS PyPy) set(VENV_PATH "${CMAKE_BINARY_DIR}/venv") @@ -16,45 +16,60 @@ set(Python_FIND_STRATEGY VERSION) find_package(Python ${PY_VERSION}.0...${PY_VERSION}.99 COMPONENTS Interpreter Development) set(PY_EXT_FILE _ppmd) -set(PY_CFFI_FILE _ppmd) -set(PY_EXT_DIR src/pyppmd/c) -set(PY_CFFI_DIR src/pyppmd/cffi) +set(PY_CFFI_FILE _cffi_ppmd) +set(PY_EXT_DIR pyppmd/c) +set(PY_CFFI_DIR pyppmd/cffi) file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/get_ext.py "import sysconfig\nprint(sysconfig.get_config_var('EXT_SUFFIX'))\n") execute_process( COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/get_ext.py OUTPUT_VARIABLE PY_EXT_EXT OUTPUT_STRIP_TRAILING_WHITESPACE) -set(PY_EXT ${PY_EXT_DIR}/${PY_EXT_FILE}.${PY_EXT_EXT}) -set(PY_CFFI ${PY_CFFI_DIR}/PY_CFFI_FILE}.${PY_EXT_EXT}) -if(DEBUG_BUILD) - if (WIN32) + +set(PY_BUILD_LIB_DIR build/lib.${PY_PLATFORM}-${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}) +set(PY_EXT_INPLACE src/${PY_EXT_DIR}/${PY_EXT_FILE}.${PY_EXT_EXT}) +set(PY_EXT ${PY_BUILD_LIB_DIR}/${PY_EXT_DIR}/${PY_EXT_FILE}.${PY_EXT_EXT}) +set(PY_CFFI_INPLACE src/${PY_CFFI_DIR}/${PY_CFFI_FILE}.${PY_EXT_EXT}) +set(PY_CFFI ${PY_BUILD_LIB_DIR}/${PY_CFFI_DIR}/${PY_CFFI_FILE}.${PY_EXT_EXT}) +if (WIN32) + if(DEBUG_BUILD) set(BUILD_EXT_PYTHON ${VENV_PATH}/Scripts/python_d.exe) - set(BUILD_EXT_OPTION -g) else() - set(BUILD_EXT_PYTHON ${Python_EXECUTABLE}) - set(BUILD_EXT_OPTION -g) - endif() + set(BUILD_EXT_PYTHON ${VENV_PATH}/bin/python.exe) + endif() + set(BUILD_EXT_OPTION -g) else() - set(BUILD_EXT_PYTHON ${Python_EXECUTABLE}) - set(BUILD_EXT_OPTION) + set(BUILD_EXT_PYTHON ${VENV_PATH}/bin/python) + set(BUILD_EXT_OPTION -g) endif() add_custom_target( generate_ext BYPRODUCTS ${PY_EXT} - COMMAND ${BUILD_EXT_PYTHON} setup.py build_ext ${BUILD_EXT_OPTION} --inplace + COMMAND ${BUILD_EXT_PYTHON} setup.py build_ext ${BUILD_EXT_OPTION} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS venv.stamp SOURCES ${pyppmd_sources}) add_custom_target( generate_cffi - BYPRODUCTS ${PY_CFFI} + BYPRODUCTS ${PY_CFFI_INPLACE} COMMAND ${BUILD_EXT_PYTHON} setup.py build_ext ${BUILD_EXT_OPTION} --cffi --inplace WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} DEPENDS venv.stamp SOURCES ${pyppmd_sources}) # ################################################################################################## +include_directories(src/lib/buffer src/lib/ppmd) +set(_sources src/ext/_ppmdmodule.c src/lib/buffer/Buffer.c src/lib/buffer/ThreadDecoder.c + src/lib/ppmd/Ppmd7.c src/lib/ppmd/Ppmd7Dec.c src/lib/ppmd/Ppmd7Enc.c + src/lib/ppmd/Ppmd8.c src/lib/ppmd/Ppmd8Dec.c src/lib/ppmd/Ppmd8Enc.c) +Python_add_library(_ppmd MODULE WITH_SOABI ${_sources}) +add_custom_target(build_ext + BYPRODUCTS ${PY_EXT_INPLACE} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:_ppmd> ${CMAKE_SOURCE_DIR}/src/${PY_EXT_DIR} + DEPENDS _ppmd venv.stamp + ) + +# ################################################################################################## # create virtualenv file( WRITE ${CMAKE_CURRENT_BINARY_DIR}/requirements.txt @@ -66,19 +81,24 @@ pytest-cov pytest-timeout cffi +py-cpuinfo +tox ") if (WIN32) set(PIP_COMMAND ${VENV_PATH}/Scripts/pip.exe) else() set(PIP_COMMAND ${VENV_PATH}/bin/pip) endif() -add_custom_target( - venv.stamp - BYPRODUCTS venv.stamp +add_custom_command(OUTPUT venv.stamp COMMAND ${Python_EXECUTABLE} -m venv ${VENV_PATH} COMMAND ${PIP_COMMAND} install -r ${CMAKE_BINARY_DIR}/requirements.txt COMMAND ${CMAKE_COMMAND} -E touch venv.stamp) -set(VPKG_PATH_A "${VENV_PATH}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/") +set(SRC_PATH "${CMAKE_SOURCE_DIR}/src") +if ("${Python_INTERPRETER_ID}" STREQUAL "PyPy") + set(VPKG_PATH_A "${VENV_PATH}/lib/pypy${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/") +else() + set(VPKG_PATH_A "${VENV_PATH}/lib/python${Python_VERSION_MAJOR}.${Python_VERSION_MINOR}/site-packages/") +endif() set(VPKG_PATH_B "${VENV_PATH}/Lib/site-packages/") # ################################################################################################## @@ -88,43 +108,7 @@ " #include <string> #include <filesystem> -#include <Python.h> -int main(int argc, char **argv) { - std::string args; - if ( argc > 1) { - args.append(\"[\"); - for (int i = 1; i < argc; i++) { - if (i > 2) - args.append(\",\"); - args.append(\"\\\"\"); - args.append(argv[i]); - args.append(\"\\\"\"); - } - args.append(\"]\"); - } - std::filesystem::path vsite_path_a = \"${VPKG_PATH_A}\"; - std::filesystem::path vsite_path_b = \"${VPKG_PATH_B}\"; - std::string pycode = - \"import sys\\n\" - \"sys.path.append('src')\\n\" - \"sys.path.append('\" + vsite_path_a.string() + \"')\\n\" - \"sys.path.append('\" + vsite_path_b.string() + \"')\\n\" - \"import pytest\\n\" - \"pytest.main(\" + args + \")\\n\"; - wchar_t * program_name = Py_DecodeLocale(argv[0], NULL); - Py_SetProgramName(program_name); - Py_Initialize(); - PyRun_SimpleString(&*pycode.begin()); - Py_Finalize(); - return 0; -}") -file( - WRITE ${CMAKE_CURRENT_BINARY_DIR}/pypytest_runner.cpp - " -#include <string> -#include <cstring> -#include <filesystem> -#include <PyPy.h> +#include <unistd.h> int main(int argc, char **argv) { std::string args; if ( argc > 1) { @@ -138,30 +122,31 @@ } args.append(\"]\"); } + std::filesystem::path src_path = \"${SRC_PATH}\"; std::filesystem::path vsite_path_a = \"${VPKG_PATH_A}\"; std::filesystem::path vsite_path_b = \"${VPKG_PATH_B}\"; std::string pycode = \"import sys\\n\" - \"sys.path.append('src')\\n\" + \"sys.path.append('\" + src_path.string() + \"')\\n\" \"sys.path.append('\" + vsite_path_a.string() + \"')\\n\" \"sys.path.append('\" + vsite_path_b.string() + \"')\\n\" \"import pytest\\n\" \"pytest.main(\" + args + \")\\n\"; - rpython_startup_code(); - pypy_setup_home(NULL, 1); - char * cstr = new char [pycode.length()+1]; - std::strcpy (cstr, pycode.c_str()); - pypy_execute_source(cstr); + execl(\"${Python_EXECUTABLE}\", \"${Python_EXECUTABLE}\", \"-c\", pycode.c_str(), (char*)0); return 0; }") +add_executable(pytest_runner ${CMAKE_CURRENT_BINARY_DIR}/pytest_runner.cpp) if ("${Python_INTERPRETER_ID}" STREQUAL "PyPy") - add_executable(pytest_runner ${CMAKE_CURRENT_BINARY_DIR}/pypytest_runner.cpp) + add_dependencies(pytest_runner generate_cffi) else() - add_executable(pytest_runner ${CMAKE_CURRENT_BINARY_DIR}/pytest_runner.cpp) + add_dependencies(pytest_runner generate_ext build_ext) endif() target_include_directories(pytest_runner PRIVATE ${Python_INCLUDE_DIRS}) target_link_libraries(pytest_runner PRIVATE ${Python_LIBRARIES}) -add_dependencies(pytest_runner venv.stamp generate_ext generate_cffi) +add_custom_target(run_pytest + COMMAND $<TARGET_FILE:pytest_runner> --verbose + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + DEPENDS pytest_runner) # ################################################################################################## # for build test and analytics @@ -189,3 +174,8 @@ target_include_directories(pyppmd PRIVATE ${Python_INCLUDE_DIRS}) target_link_libraries(pyppmd PRIVATE ${Python_LIBRARIES}) # ################################################################################################## +add_custom_target(run_tox + COMMAND ${CMAKE_COMMAND} -E env VIRTUAL_ENV=${VENV_PATH} ${VENV_PATH}/bin/python -m tox + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS venv.stamp + ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/Changelog.rst new/pyppmd-1.1.0/Changelog.rst --- old/pyppmd-1.0.0/Changelog.rst 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/Changelog.rst 2023-11-05 07:13:42.000000000 +0100 @@ -7,6 +7,23 @@ `Unreleased`_ ============= +`v1.1.0`_ +========= + +Added +----- +* Add Python 3.12 support + +Changed +------- +* Minimum required python to be 3.8 +* Export PPMD8_RESTORE_METHOD_* constants +* Drop setup.cfg +* Drop github actions workflows +* README: Add SPDX identifier +* CI run on python 3.10, 3.11 and 3.12 + + `v1.0.0`_ ========= @@ -86,9 +103,10 @@ .. History links -.. _Unreleased: https://github.com/miurahr/pyppmd/compare/v1.0.0...HEAD -.. _v1.0.0: https://github.com/miurahr/pyppmd/compare/v0.18.3...v1.0.0 -.. _v0.18.3: https://github.com/miurahr/pyppmd/compare/v0.18.2...v0.18.3 -.. _v0.18.2: https://github.com/miurahr/pyppmd/compare/v0.18.1...v0.18.2 -.. _v0.18.1: https://github.com/miurahr/pyppmd/compare/v0.18.0...v0.18.1 -.. _v0.18.0: https://github.com/miurahr/pyppmd/compare/v0.17.4...v0.18.0 +.. _Unreleased: https://codeberg.org/miurahr/pyppmd/compare/v1.1.0...HEAD +.. _v1.1.0: https://codeberg.org/miurahr/pyppmd/compare/v1.0.0...v1.1.0 +.. _v1.0.0: https://codeberg.org/miurahr/pyppmd/compare/v0.18.3...v1.0.0 +.. _v0.18.3: https://codeberg.org/miurahr/pyppmd/compare/v0.18.2...v0.18.3 +.. _v0.18.2: https://codeberg.org/miurahr/pyppmd/compare/v0.18.1...v0.18.2 +.. _v0.18.1: https://codeberg.org/miurahr/pyppmd/compare/v0.18.0...v0.18.1 +.. _v0.18.0: https://codeberg.org/miurahr/pyppmd/compare/v0.17.4...v0.18.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/MANIFEST.in new/pyppmd-1.1.0/MANIFEST.in --- old/pyppmd-1.0.0/MANIFEST.in 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/MANIFEST.in 2023-11-05 07:13:42.000000000 +0100 @@ -2,6 +2,7 @@ include *.txt include tox.ini include LICENSE +include .flake8 recursive-include docs *.bat recursive-include docs *.py @@ -22,4 +23,6 @@ exclude .gitignore exclude .gitattributes -prune .github \ No newline at end of file +exclude .woodpecker.yml +prune ci +prune issue_template \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/PKG-INFO new/pyppmd-1.1.0/PKG-INFO --- old/pyppmd-1.0.0/PKG-INFO 2022-08-02 10:29:01.995124300 +0200 +++ new/pyppmd-1.1.0/PKG-INFO 2023-11-05 07:14:44.089068200 +0100 @@ -1,13 +1,14 @@ Metadata-Version: 2.1 Name: pyppmd -Version: 1.0.0 +Version: 1.1.0 Summary: PPMd compression/decompression library -Home-page: http://github.com/miurahr/pyppmd -Author: Hiroshi Miura Author-email: Hiroshi Miura <miur...@linux.com> License: LGPL-2.1-or-later -Project-URL: Source, https://github.com/miurahr/pyppmd -Keywords: ppmd,7-zip,compression +Project-URL: Source, https://codeberg.org/miurahr/pyppmd +Project-URL: Homepage, https://pyppmd.readthedocs.io/ +Project-URL: Documentation, https://pyppmd.readthedocs.io/en/stable/ +Project-URL: Bug Tracker, https://codeberg.org/miurahr/pyppmd/issues +Project-URL: Changelog, https://pyppmd.readthedocs.io/en/latest/changelog.html Classifier: Development Status :: 5 - Production/Stable Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) Classifier: Operating System :: MacOS :: MacOS X @@ -26,33 +27,48 @@ Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Software Development :: Libraries :: Python Modules -Requires-Python: >=3.6 +Requires-Python: >=3.8 Description-Content-Type: text/x-rst +License-File: LICENSE Provides-Extra: test +Requires-Dist: pytest>=6.0; extra == "test" +Requires-Dist: pytest-benchmark; extra == "test" +Requires-Dist: pytest-cov; extra == "test" +Requires-Dist: pytest-timeout; extra == "test" +Requires-Dist: hypothesis; extra == "test" +Requires-Dist: coverage[toml]>=5.2; extra == "test" Provides-Extra: check +Requires-Dist: mypy>=0.812; extra == "check" +Requires-Dist: mypy_extensions>=0.4.3; extra == "check" +Requires-Dist: check-manifest; extra == "check" +Requires-Dist: flake8<5; extra == "check" +Requires-Dist: flake8-isort; extra == "check" +Requires-Dist: flake8-black; extra == "check" +Requires-Dist: readme-renderer; extra == "check" +Requires-Dist: pygments; extra == "check" +Requires-Dist: isort>=5.0.3; extra == "check" Provides-Extra: docs +Requires-Dist: sphinx>=2.3; extra == "docs" +Requires-Dist: sphinx_rtd_theme; extra == "docs" Provides-Extra: fuzzer -License-File: LICENSE +Requires-Dist: atheris; extra == "fuzzer" +Requires-Dist: hypothesis; extra == "fuzzer" PyPPMd ====== -.. image:: https://readthedocs.org/projects/pyppmd/badge/?version=latest - :target: https://pyppmd.readthedocs.io/en/latest/?badge=latest - .. image:: https://badge.fury.io/py/pyppmd.svg :target: https://badge.fury.io/py/pyppmd .. image:: https://img.shields.io/conda/vn/conda-forge/pyppmd :target: https://anaconda.org/conda-forge/pyppmd -.. image:: https://github.com/miurahr/pyppmd/workflows/Run%20Tox%20tests/badge.svg - :target: https://github.com/miurahr/pyppmd/actions - -.. image:: https://coveralls.io/repos/github/miurahr/pyppmd/badge.svg?branch=main - :target: https://coveralls.io/github/miurahr/pyppmd?branch=main +.. image:: https://readthedocs.org/projects/pyppmd/badge/?version=latest + :target: https://pyppmd.readthedocs.io/en/latest/?badge=latest +.. image:: https://dev.azure.com/miurahr/CodeBerg/_apis/build/status%2FCodeBerg-pyppmd-CI?branchName=main + :target: https://dev.azure.com/miurahr/CodeBerg/_build/latest?definitionId=29&branchName=main Introduction ------------ @@ -70,7 +86,7 @@ Development status ------------------ -A development status is considered as ``Beta``. +A project status is considered as ``Stable``. Extra input byte ---------------- @@ -103,9 +119,12 @@ Some codes are derived from p7zip/7zip and pyzstd project. Details are shown in LicenseNotices.rst +- SPDX-License-Identifier: LGPL-2.1-or-later +- SPDX-URL: https://spdx.org/licenses/LGPL-2.1-or-later.html + PyPPMd is licensed under GNU Lesser General Public License v2.1 or later. -- Copyright (C) 2020-2022 Hiroshi Miura +- Copyright (C) 2020-2023 Hiroshi Miura - Copyright (C) 2020-2021 Ma Lin - Copyright (C) 2010-2012 Lockless Inc. - Copyright (C) 1999-2017 Igor Pavlov diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/README.rst new/pyppmd-1.1.0/README.rst --- old/pyppmd-1.0.0/README.rst 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/README.rst 2023-11-05 07:13:42.000000000 +0100 @@ -2,21 +2,17 @@ ====== -.. image:: https://readthedocs.org/projects/pyppmd/badge/?version=latest - :target: https://pyppmd.readthedocs.io/en/latest/?badge=latest - .. image:: https://badge.fury.io/py/pyppmd.svg :target: https://badge.fury.io/py/pyppmd .. image:: https://img.shields.io/conda/vn/conda-forge/pyppmd :target: https://anaconda.org/conda-forge/pyppmd -.. image:: https://github.com/miurahr/pyppmd/workflows/Run%20Tox%20tests/badge.svg - :target: https://github.com/miurahr/pyppmd/actions - -.. image:: https://coveralls.io/repos/github/miurahr/pyppmd/badge.svg?branch=main - :target: https://coveralls.io/github/miurahr/pyppmd?branch=main +.. image:: https://readthedocs.org/projects/pyppmd/badge/?version=latest + :target: https://pyppmd.readthedocs.io/en/latest/?badge=latest +.. image:: https://dev.azure.com/miurahr/CodeBerg/_apis/build/status%2FCodeBerg-pyppmd-CI?branchName=main + :target: https://dev.azure.com/miurahr/CodeBerg/_build/latest?definitionId=29&branchName=main Introduction ------------ @@ -34,7 +30,7 @@ Development status ------------------ -A development status is considered as ``Beta``. +A project status is considered as ``Stable``. Extra input byte ---------------- @@ -67,9 +63,12 @@ Some codes are derived from p7zip/7zip and pyzstd project. Details are shown in LicenseNotices.rst +- SPDX-License-Identifier: LGPL-2.1-or-later +- SPDX-URL: https://spdx.org/licenses/LGPL-2.1-or-later.html + PyPPMd is licensed under GNU Lesser General Public License v2.1 or later. -- Copyright (C) 2020-2022 Hiroshi Miura +- Copyright (C) 2020-2023 Hiroshi Miura - Copyright (C) 2020-2021 Ma Lin - Copyright (C) 2010-2012 Lockless Inc. - Copyright (C) 1999-2017 Igor Pavlov diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/SECURITY.rst new/pyppmd-1.1.0/SECURITY.rst --- old/pyppmd-1.0.0/SECURITY.rst 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/SECURITY.rst 2023-11-05 07:13:42.000000000 +0100 @@ -9,9 +9,9 @@ +---------+--------------------+ | Version | Status | +=========+====================+ -| 0.18.x | Development | +| 1.0.x | Development | +---------+--------------------+ -| < 0.18 | not supported | +| < 1.0 | not supported | +---------+--------------------+ Reporting a Vulnerability diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/ci/azure-pipelines/CodeBerg-pyppmd-CI.yml new/pyppmd-1.1.0/ci/azure-pipelines/CodeBerg-pyppmd-CI.yml --- old/pyppmd-1.0.0/ci/azure-pipelines/CodeBerg-pyppmd-CI.yml 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/ci/azure-pipelines/CodeBerg-pyppmd-CI.yml 1970-01-01 01:00:00.000000000 +0100 @@ -1,244 +0,0 @@ -# Variable 'python.version' was defined in the Variables tab -# Multi-job configuration must be converted to matrix strategy: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases?view=azure-devops&tabs=yaml#multi-job-configuration -variables: -- name: BuildParameters.versionSpec - value: $(python.version) -trigger: - branches: - include: - - releases/* - - main -resources: - repositories: - - repository: self - type: git - ref: refs/heads/main -jobs: -- job: Job_5 - displayName: Check - pool: - vmImage: ubuntu-latest - strategy: - matrix: - "python 3.8": - - python.version: 3.8 - "python 3.9": - - python.version: 3.9 - "python 3.10": - - python.version: 3.10 - steps: - - checkout: self - clean: true - - task: UsePythonVersion@0 - displayName: Use Python $(python.version) - inputs: - versionSpec: $(BuildParameters.versionSpec) - disableDownloadFromRegistry: true - - task: Bash@3 - displayName: Install dependencies and run tox - inputs: - targetType: inline - script: >- - python -m pip install --upgrade pip setuptools setuptools_scm[toml] coverage[toml] tox importlib_metadata build - python -m tox -e py - - task: Bash@3 - displayName: build sdist - inputs: - targetType: inline - script: >- - python -m build --sdist - condition: eq(variables['python.version'], '3.8') - - task: PublishBuildArtifacts@1 - displayName: Publish Artifact - inputs: - PathtoPublish: dist - ArtifactName: wheelhouse - condition: eq(variables['python.version'], '3.8') -- job: Job_1 - displayName: linux - dependsOn: Job_5 - pool: - vmImage: ubuntu-latest - steps: - - checkout: self - clean: true - - task: UsePythonVersion@0 - displayName: Use Python 3.x - inputs: - disableDownloadFromRegistry: true - - task: Bash@3 - displayName: Install dependencies - inputs: - targetType: inline - script: > - set -o errexit - python3 -m pip install --upgrade pip - pip3 install cibuildwheel==2.8.1 - - task: Bash@3 - displayName: Build wheels - inputs: - targetType: inline - script: cibuildwheel --output-dir wheelhouse . - env: - CIBW_PRERELEASE_PYTHONS: True - - task: PublishBuildArtifacts@1 - displayName: Publish Artifact - inputs: - PathtoPublish: wheelhouse - ArtifactName: wheelhouse -- job: Job_2 - displayName: macos - dependsOn: Job_5 - pool: - vmImage: macos-latest - steps: - - checkout: self - clean: true - - task: UsePythonVersion@0 - displayName: Use Python 3.x - inputs: - disableDownloadFromRegistry: true - - task: Bash@3 - displayName: Install dependencies - inputs: - targetType: inline - script: > - set -o errexit - python3 -m pip install --upgrade pip - python3 -m pip install cibuildwheel==2.8.0 - - task: Bash@3 - displayName: Build wheels - inputs: - targetType: inline - script: > - cibuildwheel --output-dir wheelhouse . - env: - CIBW_PRERELEASE_PYTHONS: True - - task: PublishBuildArtifacts@1 - displayName: Publish Artifact - inputs: - PathtoPublish: wheelhouse - ArtifactName: wheelhouse -- job: Job_3 - displayName: windows - dependsOn: Job_5 - pool: - vmImage: windows-latest - steps: - - checkout: self - clean: true - - task: UsePythonVersion@0 - displayName: Use Python 3.x - inputs: - disableDownloadFromRegistry: true - - task: Bash@3 - displayName: Install dependecies - inputs: - targetType: inline - script: > - set -o errexit - python -m pip install --upgrade pip - pip install cibuildwheel==2.8.0 - - task: Bash@3 - displayName: Build wheels - inputs: - targetType: inline - script: cibuildwheel --output-dir wheelhouse . - env: - CIBW_PRERELEASE_PYTHONS: True - - task: PublishBuildArtifacts@1 - displayName: Publish Artifact - inputs: - PathtoPublish: wheelhouse - ArtifactName: wheelhouse -- job: Job_6 - displayName: linux(aarch64) - dependsOn: Job_5 - pool: - name: Azure Pipelines - steps: - - checkout: self - clean: true - - task: UsePythonVersion@0 - displayName: Use Python 3.x - - task: DockerInstaller@0 - displayName: Install Docker 20.10.17 - inputs: - dockerVersion: 20.10.17 - - task: Bash@3 - displayName: Install dependecies and qemu - inputs: - targetType: inline - script: > - set -o errexit - python -m pip install --upgrade pip - docker pull tonistiigi/binfmt:latest - docker run --rm --privileged tonistiigi/binfmt:latest --install arm64 - pip install cibuildwheel==2.8.0 - - task: Bash@3 - displayName: Build wheels - inputs: - targetType: inline - script: cibuildwheel --output-dir wheelhouse . - env: - CIBW_PRERELEASE_PYTHONS: True - CIBW_ARCHS: aarch64 - - task: PublishBuildArtifacts@1 - displayName: Publish Artifact - inputs: - PathtoPublish: wheelhouse - ArtifactName: wheelhouse -- job: Job_4 - displayName: Publish to PyPI - dependsOn: - - Job_1 - - Job_2 - - Job_3 - - Job_6 - pool: - vmImage: ubuntu-latest - steps: - - checkout: self - clean: true - - task: UsePythonVersion@0 - displayName: Use Python 3.x - - task: DownloadBuildArtifacts@1 - displayName: Download Build Artifacts - inputs: - artifactName: wheelhouse - itemPattern: > - ** - downloadPath: wheelhouse - - task: Bash@3 - displayName: Install Dependencies - inputs: - targetType: inline - script: > - python -m pip install twine - - task: TwineAuthenticate@1 - displayName: Twine Authenticate (testpypi) - condition: and(not(startsWith(variables['build.sourceBranch'], 'refs/tags/v')), startsWith(variables['build.sourceBranch'], 'refs/heads/releases/')) - inputs: - pythonUploadServiceConnection: 38ba9668-be53-494d-b8b5-ce3dc32fd309 - - task: Bash@3 - displayName: Upload to Python Package Index(test) - condition: and(succeeded(), not(startsWith(variables['build.sourceBranch'], 'refs/tags/v')), startsWith(variables['build.sourceBranch'], 'refs/heads/releases/')) - inputs: - targetType: inline - script: >+ - python -m twine upload --repository testpypi --config-file $(PYPIRC_PATH) wheelhouse/wheelhouse/* - - - task: TwineAuthenticate@1 - displayName: Twine Authenticate (pypi) - condition: startsWith(variables['build.sourceBranch'], 'refs/tags/v') - inputs: - pythonUploadServiceConnection: 7bcc3d9c-d109-445a-b785-5890d404db02 - - task: Bash@3 - displayName: Upload to Python Package Index - condition: and(succeeded(), startsWith(variables['build.sourceBranch'], 'refs/tags/v')) - inputs: - targetType: inline - script: >+ - python -m twine upload --repository pypi --config-file $(PYPIRC_PATH) wheelhouse/wheelhouse/* - -... diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/issue_template/bug_report.md new/pyppmd-1.1.0/issue_template/bug_report.md --- old/pyppmd-1.0.0/issue_template/bug_report.md 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/issue_template/bug_report.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,30 +0,0 @@ ---- -name: "Bug report" -about: "Create a report to help us improve" -title: '[BUG]' -labels: -- bugs ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**Related issue** -(if exist) - -**To Reproduce** -Steps to reproduce the behavior: - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Environment (please complete the following information):** - - OS: [e.g. Windows 10, Ubuntu Linux 18.04.01] - - Python [e.g. 3.6, pypy3.6.9-7.3.0] - - project version: [e.g. v0.2, commit #123456 on main] - -**Test data(please attach in the report):** -A minimum test data to reproduce your problem. - -**Additional context** -Add any other context about the problem here. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/issue_template/feature_request.md new/pyppmd-1.1.0/issue_template/feature_request.md --- old/pyppmd-1.0.0/issue_template/feature_request.md 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/issue_template/feature_request.md 1970-01-01 01:00:00.000000000 +0100 @@ -1,19 +0,0 @@ ---- -name: "Feature request" -about: "Suggest an idea for this project" -title: '[FEATURE]' -labels: -- enhancement ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/pyproject.toml new/pyppmd-1.1.0/pyproject.toml --- old/pyppmd-1.0.0/pyproject.toml 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/pyproject.toml 2023-11-05 07:13:42.000000000 +0100 @@ -1,6 +1,6 @@ [project] name = "pyppmd" -requires-python = ">=3.6" +requires-python = ">=3.8" description = "PPMd compression/decompression library" readme = "README.rst" license = {text = "LGPL-2.1-or-later"} @@ -42,7 +42,8 @@ "mypy>=0.812", "mypy_extensions>=0.4.3", "check-manifest", - "flake8", + "flake8<5", + "flake8-isort", "flake8-black", "readme-renderer", "pygments", @@ -58,18 +59,25 @@ ] [project.urls] -Source = "https://github.com/miurahr/pyppmd" +Source = "https://codeberg.org/miurahr/pyppmd" +Homepage = "https://pyppmd.readthedocs.io/" +Documentation = "https://pyppmd.readthedocs.io/en/stable/" +"Bug Tracker" = "https://codeberg.org/miurahr/pyppmd/issues" +Changelog = "https://pyppmd.readthedocs.io/en/latest/changelog.html" [build-system] -requires = ["setuptools>=58", "wheel", "setuptools_scm[toml]>=6.0.1"] +requires = ["setuptools>=59", "setuptools_scm[toml]>=6.4.2"] build-backend = "setuptools.build_meta" -[tools.setuptools_scm] +[tool.setuptools_scm] local_scheme = "no-local-version" +[tool.setuptools.package-data] +pyppmd = ["py.typed"] + [tool.black] line-length = 125 -target-version = ['py38'] +target-version = ['py310'] [tool.coverage.paths] source = ["src", "**/site-packages"] @@ -115,54 +123,49 @@ manylinux-ppc64le-image = "manylinux2014" manylinux-s390x-image = "manylinux2014" manylinux-pypy_x86_64-image = "manylinux2014" -manylinux-pypy_i686-image = "manylinux2014" manylinux-pypy_aarch64-image = "manylinux2014" musllinux-x86_64-image = "musllinux_1_1" -musllinux-i686-image = "musllinux_1_1" musllinux-aarch64-image = "musllinux_1_1" musllinux-ppc64le-image = "musllinux_1_1" musllinux-s390x-image = "musllinux_1_1" [tool.cibuildwheel.linux] -archs = ["auto", "aarch64"] +archs = ["auto64", "aarch64"] [tool.cibuildwheel.macos] -archs = ["x86_64", "arm64"] +archs = ["x86_64", "universal2", "arm64"] [tool.tox] legacy_tox_ini = """ [tox] -envlist = check, py{36,37,38,39,310,311}, pypy3, docs, coveralls +envlist = check, py{38,39,310,311,312}, pypy{38,39}, docs [testenv] -passenv = TRAVIS TRAVIS_* APPVEYOR APPVEYOR_* GITHUB_* PYTEST_ADDOPTS COVERALLS_* SETUPTOOLS_USE_DISTUTILS +passenv = + PYTEST_ADDOPTS + SETUPTOOLS_USE_DISTUTILS extras = test commands = python -m pytest -vv -s +[testenv:pypy38] +basepython = pypy3.8 + +[testenv:pypy39] +basepython = pypy3.9 + [testenv:check] -basepython = python3.8 +basepython = python3.10 extras = check ignore_errors=true commands = check-manifest {toxinidir} flake8 src tests setup.py - isort --quiet --check-only --diff src tests setup.py [testenv:docs] -basepython = python3.8 +basepython = python3.10 extras = docs commands = sphinx-build {posargs:-E} -b html docs build/html - -[gh-actions] -python = - 3.6: py36 - 3.7: py37 - 3.8: py38, check, docs - 3.9: py39 - 3.10: py310 - 3.11: py311 - pypy-3: pypy3 """ \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/setup.cfg new/pyppmd-1.1.0/setup.cfg --- old/pyppmd-1.0.0/setup.cfg 2022-08-02 10:29:01.995124300 +0200 +++ new/pyppmd-1.1.0/setup.cfg 2023-11-05 07:14:44.089068200 +0100 @@ -1,71 +1,3 @@ -[metadata] -name = pyppmd -description = PPMd compression/decompression library -long_description = file: README.rst -long_description_content_type = text/x-rst -keywords = ppmd, 7-zip, compression -license = LGPL-2.1+ -author = Hiroshi Miura -author_email = miur...@linux.com -url = http://github.com/miurahr/pyppmd -classifiers = - Development Status :: 5 - Production/Stable - License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) - Operating System :: MacOS :: MacOS X - Operating System :: Microsoft :: Windows - Operating System :: POSIX - Operating System :: POSIX :: Linux - Programming Language :: Python - Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 - Programming Language :: Python :: 3 :: Only - Programming Language :: Python :: Implementation :: CPython - Programming Language :: Python :: Implementation :: PyPy - Topic :: Software Development :: Libraries :: Python Modules - -[options] -python_requires = >=3.6 -setup_requires = - setuptools-scm>=6.0.1 - setuptools>=58.0 - -[options.package_data] -pyppmd = py.typed - -[options.extras_require] -test = - pytest>=6.0 - pytest-benchmark - pytest-cov - pytest-timeout - hypothesis - coverage[toml]>=5.2 -check = - mypy>=0.812 - mypy_extensions>=0.4.3 - check-manifest - flake8 - flake8-black - readme-renderer - pygments - isort>=5.0.3 -docs = - sphinx>=2.3 - sphinx_rtd_theme -fuzzer = - atheris - hypothesis - -[flake8] -max-line-length = 125 -extend-ignore = E203, W503 -ignore = F841 - [egg_info] tag_build = tag_date = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/setup.py new/pyppmd-1.1.0/setup.py --- old/pyppmd-1.0.0/setup.py 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/setup.py 2023-11-05 07:13:42.000000000 +0100 @@ -7,22 +7,20 @@ from setuptools.command.build_ext import build_ext from setuptools.command.egg_info import egg_info -sources = [ - "src/lib/ppmd/Ppmd7.c", - "src/lib/ppmd/Ppmd8.c", - "src/lib/ppmd/Ppmd8Dec.c", - "src/lib/ppmd/Ppmd7Enc.c", - "src/lib/ppmd/Ppmd8Enc.c", - "src/lib/ppmd/Ppmd7Dec.c", - "src/lib/buffer/Buffer.c", - "src/lib/buffer/ThreadDecoder.c", -] -_ppmd_extension = Extension("pyppmd._ppmd", sources) kwargs = { "include_dirs": ["src/lib/ppmd", "src/lib/buffer"], "library_dirs": [], "libraries": [], - "sources": sources, + "sources": [ + "src/lib/ppmd/Ppmd7.c", + "src/lib/ppmd/Ppmd8.c", + "src/lib/ppmd/Ppmd8Dec.c", + "src/lib/ppmd/Ppmd7Enc.c", + "src/lib/ppmd/Ppmd8Enc.c", + "src/lib/ppmd/Ppmd7Dec.c", + "src/lib/buffer/Buffer.c", + "src/lib/buffer/ThreadDecoder.c", + ], "define_macros": [], } @@ -45,8 +43,7 @@ sys.path.append("src/ext") import ffi_build - ffi_build.set_kwargs(**kwargs) - binary_extension = ffi_build.ffibuilder.distutils_extension() + binary_extension = ffi_build.get_extension(**kwargs) else: # C implementation # packages packages = ["pyppmd", "pyppmd.c"] @@ -88,7 +85,6 @@ setup( - use_scm_version={"local_scheme": "no-local-version"}, ext_modules=[binary_extension], package_dir={"": "src"}, packages=packages, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/src/ext/ffi_build.py new/pyppmd-1.1.0/src/ext/ffi_build.py --- old/pyppmd-1.0.0/src/ext/ffi_build.py 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/src/ext/ffi_build.py 2023-11-05 07:13:42.000000000 +0100 @@ -1,19 +1,23 @@ import sys - -import cffi # type: ignore # noqa +try: + from cffi import FFI # type: ignore # noqa +except ImportError: + # PyPy includes cffi by default + msg = ('To build the CFFI implementation of pyzstd module, need to ' + 'install cffi module like this: "sudo python3 -m pip install ' + 'cffi". On CPython, CFFI implementation is slower than C ' + 'implementation.') + raise ImportError(msg) def is_64bit() -> bool: return sys.maxsize > 1 << 32 -ffibuilder = cffi.FFI() - # ----------- PPMd interfaces --------------------- # Interface.h # Buffer.h -ffibuilder.cdef( - r""" +defs = r""" typedef unsigned char Byte; typedef short Int16; typedef unsigned short UInt16; @@ -49,12 +53,10 @@ size_t pos; /**< position where writing stopped. Will be updated. Necessarily 0 <= pos <= size */ } OutBuffer; """ -) # Ppmd.h # Ppmd7.h -ffibuilder.cdef( - r""" +defs += r""" /* SEE-contexts for PPM-contexts with masked symbols */ typedef struct { @@ -71,19 +73,17 @@ UInt16 SuccessorHigh; } CPpmd_State; """ -) if is_64bit(): - ffibuilder.cdef("typedef UInt32 CPpmd_State_Ref;") - ffibuilder.cdef("typedef UInt32 CPpmd_Void_Ref;") - ffibuilder.cdef("typedef UInt32 CPpmd7_Context_Ref;") + defs += "typedef UInt32 CPpmd_State_Ref;\n" + defs += "typedef UInt32 CPpmd_Void_Ref;\n" + defs += "typedef UInt32 CPpmd7_Context_Ref;\n" else: - ffibuilder.cdef("typedef CPpmd_State * CPpmd_State_Ref;") - ffibuilder.cdef("typedef void * CPpmd_Void_Ref;") - ffibuilder.cdef("struct CPpmd7_Context_; typedef struct CPpmd7_Context_ * CPpmd7_Context_Ref;") + defs += "typedef CPpmd_State * CPpmd_State_Ref;\n" + defs += "typedef void * CPpmd_Void_Ref;\n" + defs += "struct CPpmd7_Context_; typedef struct CPpmd7_Context_ * CPpmd7_Context_Ref;\n" -ffibuilder.cdef( - r""" +defs += r""" typedef struct CPpmd7_Context_ { UInt16 NumStats; @@ -126,16 +126,14 @@ IByteOut *Stream; } CPpmd7z_RangeEnc; """ -) # Ppmd8.h if is_64bit(): - ffibuilder.cdef("typedef UInt32 CPpmd8_Context_Ref;") + defs += "typedef UInt32 CPpmd8_Context_Ref;\n" else: - ffibuilder.cdef("typedef struct CPpmd8_Context_ * CPpmd8_Context_Ref;") + defs += "typedef struct CPpmd8_Context_ * CPpmd8_Context_Ref;\n" -ffibuilder.cdef( - r""" +defs += r""" typedef struct CPpmd8_Context_ { Byte NumStats; @@ -178,11 +176,9 @@ UInt16 BinSumm[25][64]; } CPpmd8; """ -) if sys.platform.startswith("win32"): - ffibuilder.cdef( - r""" + defs += r""" typedef struct _pthread_cleanup _pthread_cleanup; struct _pthread_cleanup { @@ -205,16 +201,14 @@ }; typedef struct _pthread_v *pthread_t; """ - ) elif sys.platform.startswith("darwin"): - ffibuilder.cdef(r"typedef void* pthread_t;") + defs += "typedef void* pthread_t;\n" elif sys.platform.startswith("linux"): - ffibuilder.cdef(r"typedef unsigned long int pthread_t;") + defs += "typedef unsigned long int pthread_t;\n" else: - pass # todo + pass -ffibuilder.cdef( - r""" +defs += r""" typedef struct ppmd_info_s { void *cPpmd; void *rc; @@ -231,11 +225,9 @@ int Ppmd8T_decode(CPpmd8 *cPpmd8, OutBuffer *out, int max_length, ppmd_info *args); void Ppmd8T_Free(CPpmd8 *cPpmd8, ppmd_info *args, IAlloc *allocator); """ -) # ----------- python binding API --------------------- -ffibuilder.cdef( - r""" +defs += r""" extern "Python" void *raw_alloc(size_t); extern "Python" void raw_free(void *); @@ -289,7 +281,6 @@ Bool Ppmd8_RangeDec_Init(CPpmd8 *ppmd); int Ppmd8_DecodeSymbol(CPpmd8 *ppmd); """ -) source = r""" #include "Ppmd7.h" @@ -398,9 +389,34 @@ """ -def set_kwargs(**kwargs): +ffibuilder = FFI() + + +def get_extension(**kwargs): + ffibuilder.cdef(defs) ffibuilder.set_source(source=source, **kwargs) + return ffibuilder.distutils_extension() -if __name__ == "__main__": # not when running with setuptools +if __name__ == "__main__": + # when running without setuptools + kwargs = { + "include_dirs": ["src/lib/ppmd", "src/lib/buffer"], + "library_dirs": [], + "libraries": [], + "sources": [ + "src/lib/ppmd/Ppmd7.c", + "src/lib/ppmd/Ppmd8.c", + "src/lib/ppmd/Ppmd8Dec.c", + "src/lib/ppmd/Ppmd7Enc.c", + "src/lib/ppmd/Ppmd8Enc.c", + "src/lib/ppmd/Ppmd7Dec.c", + "src/lib/buffer/Buffer.c", + "src/lib/buffer/ThreadDecoder.c", + ], + "define_macros": [], + "module_name": "pyppmd.cffi._cffi_ppmd", + } + ffibuilder.cdef(defs) + ffibuilder.set_source(source=source, **kwargs) ffibuilder.compile(verbose=True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/src/pyppmd/__init__.py new/pyppmd-1.1.0/src/pyppmd/__init__.py --- old/pyppmd-1.0.0/src/pyppmd/__init__.py 2022-08-02 10:28:09.000000000 +0200 +++ new/pyppmd-1.1.0/src/pyppmd/__init__.py 2023-11-05 07:13:42.000000000 +0100 @@ -30,7 +30,17 @@ msg = "pyppmd module: Neither C implementation nor CFFI " "implementation can be imported." raise ImportError(msg) -__all__ = ("compress", "decompress", "Ppmd7Encoder", "Ppmd7Decoder", "Ppmd8Encoder", "Ppmd8Decoder", "PpmdError") +__all__ = ( + "compress", + "decompress", + "PPMD8_RESTORE_METHOD_RESTART", + "PPMD8_RESTORE_METHOD_CUT_OFF", + "Ppmd7Encoder", + "Ppmd7Decoder", + "Ppmd8Encoder", + "Ppmd8Decoder", + "PpmdError", +) __doc__ = """\ Python bindings to PPMd compression library, the API is similar to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/src/pyppmd.egg-info/PKG-INFO new/pyppmd-1.1.0/src/pyppmd.egg-info/PKG-INFO --- old/pyppmd-1.0.0/src/pyppmd.egg-info/PKG-INFO 2022-08-02 10:29:01.000000000 +0200 +++ new/pyppmd-1.1.0/src/pyppmd.egg-info/PKG-INFO 2023-11-05 07:14:44.000000000 +0100 @@ -1,13 +1,14 @@ Metadata-Version: 2.1 Name: pyppmd -Version: 1.0.0 +Version: 1.1.0 Summary: PPMd compression/decompression library -Home-page: http://github.com/miurahr/pyppmd -Author: Hiroshi Miura Author-email: Hiroshi Miura <miur...@linux.com> License: LGPL-2.1-or-later -Project-URL: Source, https://github.com/miurahr/pyppmd -Keywords: ppmd,7-zip,compression +Project-URL: Source, https://codeberg.org/miurahr/pyppmd +Project-URL: Homepage, https://pyppmd.readthedocs.io/ +Project-URL: Documentation, https://pyppmd.readthedocs.io/en/stable/ +Project-URL: Bug Tracker, https://codeberg.org/miurahr/pyppmd/issues +Project-URL: Changelog, https://pyppmd.readthedocs.io/en/latest/changelog.html Classifier: Development Status :: 5 - Production/Stable Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+) Classifier: Operating System :: MacOS :: MacOS X @@ -26,33 +27,48 @@ Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Software Development :: Libraries :: Python Modules -Requires-Python: >=3.6 +Requires-Python: >=3.8 Description-Content-Type: text/x-rst +License-File: LICENSE Provides-Extra: test +Requires-Dist: pytest>=6.0; extra == "test" +Requires-Dist: pytest-benchmark; extra == "test" +Requires-Dist: pytest-cov; extra == "test" +Requires-Dist: pytest-timeout; extra == "test" +Requires-Dist: hypothesis; extra == "test" +Requires-Dist: coverage[toml]>=5.2; extra == "test" Provides-Extra: check +Requires-Dist: mypy>=0.812; extra == "check" +Requires-Dist: mypy_extensions>=0.4.3; extra == "check" +Requires-Dist: check-manifest; extra == "check" +Requires-Dist: flake8<5; extra == "check" +Requires-Dist: flake8-isort; extra == "check" +Requires-Dist: flake8-black; extra == "check" +Requires-Dist: readme-renderer; extra == "check" +Requires-Dist: pygments; extra == "check" +Requires-Dist: isort>=5.0.3; extra == "check" Provides-Extra: docs +Requires-Dist: sphinx>=2.3; extra == "docs" +Requires-Dist: sphinx_rtd_theme; extra == "docs" Provides-Extra: fuzzer -License-File: LICENSE +Requires-Dist: atheris; extra == "fuzzer" +Requires-Dist: hypothesis; extra == "fuzzer" PyPPMd ====== -.. image:: https://readthedocs.org/projects/pyppmd/badge/?version=latest - :target: https://pyppmd.readthedocs.io/en/latest/?badge=latest - .. image:: https://badge.fury.io/py/pyppmd.svg :target: https://badge.fury.io/py/pyppmd .. image:: https://img.shields.io/conda/vn/conda-forge/pyppmd :target: https://anaconda.org/conda-forge/pyppmd -.. image:: https://github.com/miurahr/pyppmd/workflows/Run%20Tox%20tests/badge.svg - :target: https://github.com/miurahr/pyppmd/actions - -.. image:: https://coveralls.io/repos/github/miurahr/pyppmd/badge.svg?branch=main - :target: https://coveralls.io/github/miurahr/pyppmd?branch=main +.. image:: https://readthedocs.org/projects/pyppmd/badge/?version=latest + :target: https://pyppmd.readthedocs.io/en/latest/?badge=latest +.. image:: https://dev.azure.com/miurahr/CodeBerg/_apis/build/status%2FCodeBerg-pyppmd-CI?branchName=main + :target: https://dev.azure.com/miurahr/CodeBerg/_build/latest?definitionId=29&branchName=main Introduction ------------ @@ -70,7 +86,7 @@ Development status ------------------ -A development status is considered as ``Beta``. +A project status is considered as ``Stable``. Extra input byte ---------------- @@ -103,9 +119,12 @@ Some codes are derived from p7zip/7zip and pyzstd project. Details are shown in LicenseNotices.rst +- SPDX-License-Identifier: LGPL-2.1-or-later +- SPDX-URL: https://spdx.org/licenses/LGPL-2.1-or-later.html + PyPPMd is licensed under GNU Lesser General Public License v2.1 or later. -- Copyright (C) 2020-2022 Hiroshi Miura +- Copyright (C) 2020-2023 Hiroshi Miura - Copyright (C) 2020-2021 Ma Lin - Copyright (C) 2010-2012 Lockless Inc. - Copyright (C) 1999-2017 Igor Pavlov diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/src/pyppmd.egg-info/SOURCES.txt new/pyppmd-1.1.0/src/pyppmd.egg-info/SOURCES.txt --- old/pyppmd-1.0.0/src/pyppmd.egg-info/SOURCES.txt 2022-08-02 10:29:01.000000000 +0200 +++ new/pyppmd-1.1.0/src/pyppmd.egg-info/SOURCES.txt 2023-11-05 07:14:44.000000000 +0100 @@ -1,3 +1,4 @@ +.flake8 CMakeLists.txt Changelog.rst LICENSE @@ -5,9 +6,7 @@ README.rst SECURITY.rst pyproject.toml -setup.cfg setup.py -ci/azure-pipelines/CodeBerg-pyppmd-CI.yml docs/Makefile docs/api_guide.rst docs/authors.rst @@ -21,8 +20,6 @@ docs/ppmd7.rst docs/ppmd8.rst docs/security_policy.rst -issue_template/bug_report.md -issue_template/feature_request.md src/ext/_ppmdmodule.c src/ext/ffi_build.py src/lib/buffer/Buffer.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyppmd-1.0.0/src/pyppmd.egg-info/requires.txt new/pyppmd-1.1.0/src/pyppmd.egg-info/requires.txt --- old/pyppmd-1.0.0/src/pyppmd.egg-info/requires.txt 2022-08-02 10:29:01.000000000 +0200 +++ new/pyppmd-1.1.0/src/pyppmd.egg-info/requires.txt 2023-11-05 07:14:44.000000000 +0100 @@ -3,7 +3,8 @@ mypy>=0.812 mypy_extensions>=0.4.3 check-manifest -flake8 +flake8<5 +flake8-isort flake8-black readme-renderer pygments