Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-versioneer for
openSUSE:Factory checked in at 2023-05-29 22:47:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-versioneer (Old)
and /work/SRC/openSUSE:Factory/.python-versioneer.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-versioneer"
Mon May 29 22:47:34 2023 rev:7 rq:1089423 version:0.28
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-versioneer/python-versioneer.changes
2023-05-23 14:53:27.826099867 +0200
+++
/work/SRC/openSUSE:Factory/.python-versioneer.new.1533/python-versioneer.changes
2023-05-29 22:47:37.970249398 +0200
@@ -1,0 +2,18 @@
+Fri May 26 20:12:38 UTC 2023 - Ben Greiner <[email protected]>
+
+- Update to 0.28
+ * FIX: handle unset versionfile_build in build_ext by @mgorny in
+ #347
+ * ENH: support built-in tomllib for Python 3.11+ by @mgorny in
+ #348
+- Release 0.27
+ * FIX: Always bootstrap in setup.py to avoid incompatibility with
+ old versioneer by @mgorny (#344)
+ * FIX: Mixup between _egg_info and _sdist by @DimitriPapadopoulos
+ (#342)
+ * STY: Merge endswith checks by @DimitriPapadopoulos (#337)
+ * STY: Useless inheritance from object by @DimitriPapadopoulos
+ (#336)
+- Provide [toml] extra as subpackage
+
+-------------------------------------------------------------------
Old:
----
versioneer-0.26.tar.gz
New:
----
versioneer-0.28.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-versioneer.spec ++++++
--- /var/tmp/diff_new_pack.3GqFmN/_old 2023-05-29 22:47:41.918270689 +0200
+++ /var/tmp/diff_new_pack.3GqFmN/_new 2023-05-29 22:47:41.922270711 +0200
@@ -18,15 +18,18 @@
%{?sle15_python_module_pythons}
Name: python-versioneer
-Version: 0.26
+Version: 0.28
Release: 0
Summary: VCS-based management of project version strings
License: Unlicense
Group: Development/Languages/Python
URL: https://github.com/warner/python-versioneer
Source:
https://files.pythonhosted.org/packages/source/v/versioneer/versioneer-%{version}.tar.gz
+BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module testsuite}
+BuildRequires: %{python_module tomli if %python-base < 3.11}
+BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires(post): update-alternatives
@@ -40,14 +43,28 @@
setup.py and the conventional âfrom PROJECT import _versionâ pattern)
by asking the version control system about the current tree.
+%package toml
+Summary: VCS-based management of project version strings [toml] extra
+Requires: python-versioneer = %{version}
+Requires: (python-tomli if python-base < 3.11)
+
+%description toml
+Versioneer is a tool to automatically update version strings (in
+setup.py and the conventional âfrom PROJECT import _versionâ pattern)
+by asking the version control system about the current tree.
+
+This package provides the [toml] extra
+
%prep
%setup -q -n versioneer-%{version}
%build
-%python_build
+%pyproject_wheel
%install
-%python_install
+%pyproject_install
+%python_expand sed -i '1{/^#!/d}' %{buildroot}%{$python_sitelib}/versioneer.py
+%python_compileall
%python_clone -a %{buildroot}%{_bindir}/versioneer
%python_expand %fdupes %{buildroot}%{$python_sitelib}
@@ -61,9 +78,15 @@
%python_uninstall_alternative versioneer
%files %{python_files}
-%defattr(-,root,root,-)
%doc README.md
-%{python_sitelib}/*
+%license LICENSE
+%{python_sitelib}/versioneer.py*
+%pycache_only %{python_sitelib}/__pycache__/versioneer*.pyc
+%{python_sitelib}/versioneer-%{version}.dist-info
%python_alternative %{_bindir}/versioneer
+%files %{python_files toml}
+%doc README.md
+%license LICENSE
+
%changelog
++++++ versioneer-0.26.tar.gz -> versioneer-0.28.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/PKG-INFO new/versioneer-0.28/PKG-INFO
--- old/versioneer-0.26/PKG-INFO 2022-09-06 19:09:01.888857600 +0200
+++ new/versioneer-0.28/PKG-INFO 2022-10-27 20:45:45.986500700 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: versioneer
-Version: 0.26
+Version: 0.28
Summary: Easy VCS-based management of project version strings
Author: Brian Warner
Maintainer-email: Christopher Markiewicz <[email protected]>, Nathan Buckner
<[email protected]>
@@ -69,21 +69,27 @@
### Vendored mode
* `pip install versioneer` to somewhere in your $PATH
-* add a `[tool.versioneer]` section to your `pyproject.toml or a
+ * A [conda-forge
recipe](https://github.com/conda-forge/versioneer-feedstock) is
+ available, so you can also use `conda install -c conda-forge versioneer`
+* add a `[tool.versioneer]` section to your `pyproject.toml` or a
`[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md))
+ * Note that you will need to add `tomli; python_version < "3.11"` to your
+ build-time dependencies if you use `pyproject.toml`
* run `versioneer install --vendor` in your source tree, commit the results
* verify version information with `python setup.py version`
### Build-time dependency mode
* `pip install versioneer` to somewhere in your $PATH
-* add a `[tool.versioneer]` section to your `pyproject.toml or a
+ * A [conda-forge
recipe](https://github.com/conda-forge/versioneer-feedstock) is
+ available, so you can also use `conda install -c conda-forge versioneer`
+* add a `[tool.versioneer]` section to your `pyproject.toml` or a
`[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md))
-* add `versioneer` to the `requires` key of the `build-system` table in
- `pyproject.toml`:
+* add `versioneer` (with `[toml]` extra, if configuring in `pyproject.toml`)
+ to the `requires` key of the `build-system` table in `pyproject.toml`:
```toml
[build-system]
- requires = ["setuptools", "versioneer"]
+ requires = ["setuptools", "versioneer[toml]"]
build-backend = "setuptools.build_meta"
```
* run `versioneer install --no-vendor` in your source tree, commit the results
@@ -325,9 +331,8 @@
To make Versioneer easier to embed, all its code is dedicated to the public
domain. The `_version.py` that it creates is also in the public domain.
-Specifically, both are released under the Creative Commons "Public Domain
-Dedication" license (CC0-1.0), as described in
-https://creativecommons.org/publicdomain/zero/1.0/ .
+Specifically, both are released under the "Unlicense", as described in
+https://unlicense.org/.
[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg
[pypi-url]: https://pypi.python.org/pypi/versioneer/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/README.md
new/versioneer-0.28/README.md
--- old/versioneer-0.26/README.md 2022-09-06 19:08:48.000000000 +0200
+++ new/versioneer-0.28/README.md 2022-10-27 20:45:29.000000000 +0200
@@ -25,21 +25,27 @@
### Vendored mode
* `pip install versioneer` to somewhere in your $PATH
-* add a `[tool.versioneer]` section to your `pyproject.toml or a
+ * A [conda-forge
recipe](https://github.com/conda-forge/versioneer-feedstock) is
+ available, so you can also use `conda install -c conda-forge versioneer`
+* add a `[tool.versioneer]` section to your `pyproject.toml` or a
`[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md))
+ * Note that you will need to add `tomli; python_version < "3.11"` to your
+ build-time dependencies if you use `pyproject.toml`
* run `versioneer install --vendor` in your source tree, commit the results
* verify version information with `python setup.py version`
### Build-time dependency mode
* `pip install versioneer` to somewhere in your $PATH
-* add a `[tool.versioneer]` section to your `pyproject.toml or a
+ * A [conda-forge
recipe](https://github.com/conda-forge/versioneer-feedstock) is
+ available, so you can also use `conda install -c conda-forge versioneer`
+* add a `[tool.versioneer]` section to your `pyproject.toml` or a
`[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md))
-* add `versioneer` to the `requires` key of the `build-system` table in
- `pyproject.toml`:
+* add `versioneer` (with `[toml]` extra, if configuring in `pyproject.toml`)
+ to the `requires` key of the `build-system` table in `pyproject.toml`:
```toml
[build-system]
- requires = ["setuptools", "versioneer"]
+ requires = ["setuptools", "versioneer[toml]"]
build-backend = "setuptools.build_meta"
```
* run `versioneer install --no-vendor` in your source tree, commit the results
@@ -281,9 +287,8 @@
To make Versioneer easier to embed, all its code is dedicated to the public
domain. The `_version.py` that it creates is also in the public domain.
-Specifically, both are released under the Creative Commons "Public Domain
-Dedication" license (CC0-1.0), as described in
-https://creativecommons.org/publicdomain/zero/1.0/ .
+Specifically, both are released under the "Unlicense", as described in
+https://unlicense.org/.
[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg
[pypi-url]: https://pypi.python.org/pypi/versioneer/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/_version.py
new/versioneer-0.28/_version.py
--- old/versioneer-0.26/_version.py 2022-09-06 19:09:01.888857600 +0200
+++ new/versioneer-0.28/_version.py 2022-10-27 20:45:45.986500700 +0200
@@ -8,11 +8,11 @@
version_json = '''
{
- "date": "2022-09-06T13:07:50-0400",
+ "date": "2022-10-27T14:30:06-0400",
"dirty": false,
"error": null,
- "full-revisionid": "922f0d975d203476ccea248241ded9948c568435",
- "version": "0.26"
+ "full-revisionid": "83f20fdf886df7a6089fca3bb7fc3c33198bd629",
+ "version": "0.28"
}
''' # END VERSION_JSON
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/pyproject.toml
new/versioneer-0.28/pyproject.toml
--- old/versioneer-0.26/pyproject.toml 2022-09-06 19:08:48.000000000 +0200
+++ new/versioneer-0.28/pyproject.toml 2022-10-27 20:45:29.000000000 +0200
@@ -1,5 +1,5 @@
[build-system]
-requires = ["setuptools"]
+requires = ["setuptools", "tomli; python_version < '3.11'"]
build-backend = "setuptools.build_meta"
[project]
@@ -33,4 +33,10 @@
"versioneer" = "versioneer:main"
[project.optional-dependencies]
-toml = ["tomli"]
+toml = ["tomli; python_version < '3.11'"]
+
+[tool.versioneer]
+VCS = "git"
+style = "pep440"
+versionfile_source = "_version.py"
+parentdir_prefix = ""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/setup.cfg
new/versioneer-0.28/setup.cfg
--- old/versioneer-0.26/setup.cfg 2022-09-06 19:09:01.888857600 +0200
+++ new/versioneer-0.28/setup.cfg 2022-10-27 20:45:45.986500700 +0200
@@ -1,11 +1,3 @@
-[versioneer]
-VCS = git
-style = pep440
-versionfile_source = _version.py
-versionfile_build =
-tag_prefix =
-parentdir_prefix =
-
[egg_info]
tag_build =
tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/setup.py new/versioneer-0.28/setup.py
--- old/versioneer-0.26/setup.py 2022-09-06 19:08:48.000000000 +0200
+++ new/versioneer-0.28/setup.py 2022-10-27 20:45:29.000000000 +0200
@@ -1,6 +1,7 @@
#!/usr/bin/env python
import os, base64, tempfile, io
+from importlib import util as ilu
from pathlib import Path
from setuptools import setup, Command
from setuptools.command.build_py import build_py
@@ -132,13 +133,9 @@
def run(self):
raise RuntimeError("Versioneer cannot be installed in
developer/editable mode.")
-try:
- import versioneer
-except ImportError:
- # Bootstrap a versioneer module until it's built
- from importlib import util as ilu
- versioneer = ilu.module_from_spec(ilu.spec_from_loader('versioneer',
loader=None))
- exec(generate_versioneer_py(), versioneer.__dict__)
+# Bootstrap a versioneer module to guarantee that we get a compatible version
+versioneer = ilu.module_from_spec(ilu.spec_from_loader('versioneer',
loader=None))
+exec(generate_versioneer_py(), versioneer.__dict__)
VERSION = versioneer.get_version()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/src/cmdclass.py
new/versioneer-0.28/src/cmdclass.py
--- old/versioneer-0.26/src/cmdclass.py 2022-09-06 19:08:48.000000000 +0200
+++ new/versioneer-0.28/src/cmdclass.py 2022-10-27 20:45:29.000000000 +0200
@@ -116,6 +116,8 @@
return
# now locate _version.py in the new build/ directory and replace
# it with an updated value
+ if not cfg.versionfile_build:
+ return
target_versionfile = os.path.join(self.build_lib,
cfg.versionfile_build)
if not os.path.exists(target_versionfile):
@@ -189,7 +191,7 @@
# sdist farms its file list building out to egg_info
if 'egg_info' in cmds:
- _sdist = cmds['egg_info']
+ _egg_info = cmds['egg_info']
else:
from setuptools.command.egg_info import egg_info as _egg_info
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/src/git/install.py
new/versioneer-0.28/src/git/install.py
--- old/versioneer-0.26/src/git/install.py 2022-09-06 19:08:48.000000000
+0200
+++ new/versioneer-0.28/src/git/install.py 2022-10-27 20:45:29.000000000
+0200
@@ -16,7 +16,7 @@
if "VERSIONEER_PEP518" not in globals():
try:
my_path = __file__
- if my_path.endswith(".pyc") or my_path.endswith(".pyo"):
+ if my_path.endswith((".pyc", ".pyo")):
my_path = os.path.splitext(my_path)[0] + ".py"
versioneer_file = os.path.relpath(my_path)
except NameError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/src/header.py
new/versioneer-0.28/src/header.py
--- old/versioneer-0.26/src/header.py 2022-09-06 19:08:48.000000000 +0200
+++ new/versioneer-0.28/src/header.py 2022-10-27 20:45:29.000000000 +0200
@@ -21,11 +21,15 @@
from pathlib import Path
from typing import Callable, Dict
import functools
-try:
- import tomli
- have_tomli = True
-except ImportError:
- have_tomli = False
+
+have_tomllib = True
+if sys.version_info >= (3, 11):
+ import tomllib
+else:
+ try:
+ import tomli as tomllib
+ except ImportError:
+ have_tomllib = False
class VersioneerBadRootError(Exception): ... # --STRIP DURING BUILD
@@ -82,12 +86,12 @@
pyproject_toml = root / "pyproject.toml"
setup_cfg = root / "setup.cfg"
section = None
- if pyproject_toml.exists() and have_tomli:
+ if pyproject_toml.exists() and have_tomllib:
try:
with open(pyproject_toml, 'rb') as fobj:
- pp = tomli.load(fobj)
+ pp = tomllib.load(fobj)
section = pp['tool']['versioneer']
- except (tomli.TOMLDecodeError, KeyError):
+ except (tomllib.TOMLDecodeError, KeyError):
pass
if not section:
parser = configparser.ConfigParser()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/test/demoapp2-setuptools/setup.py
new/versioneer-0.28/test/demoapp2-setuptools/setup.py
--- old/versioneer-0.26/test/demoapp2-setuptools/setup.py 2022-09-06
19:08:48.000000000 +0200
+++ new/versioneer-0.28/test/demoapp2-setuptools/setup.py 2022-10-27
20:45:29.000000000 +0200
@@ -2,6 +2,8 @@
from setuptools import setup
import versioneer
commands = versioneer.get_cmdclass().copy()
+# Updating our updated commands should be safe
+commands = versioneer.get_cmdclass(commands).copy()
setup(name="demoapp2",
version=versioneer.get_version(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/versioneer-0.26/test/demoappext-setuptools/demo/ext.c
new/versioneer-0.28/test/demoappext-setuptools/demo/ext.c
--- old/versioneer-0.26/test/demoappext-setuptools/demo/ext.c 2022-09-06
19:08:48.000000000 +0200
+++ new/versioneer-0.28/test/demoappext-setuptools/demo/ext.c 2022-10-27
20:45:29.000000000 +0200
@@ -1,15 +1,17 @@
-/* Generated by Cython 0.29.21 */
+/* Generated by Cython 0.29.32 */
+#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
+#endif /* PY_SSIZE_T_CLEAN */
#include "Python.h"
#ifndef Py_PYTHON_H
#error Python headers needed to compile C extensions, please install
development version of Python.
#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX &&
PY_VERSION_HEX < 0x03030000)
#error Cython requires Python 2.6+ or Python 3.3+.
#else
-#define CYTHON_ABI "0_29_21"
-#define CYTHON_HEX_VERSION 0x001D15F0
-#define CYTHON_FUTURE_DIVISION 0
+#define CYTHON_ABI "0_29_32"
+#define CYTHON_HEX_VERSION 0x001D20F0
+#define CYTHON_FUTURE_DIVISION 1
#include <stddef.h>
#ifndef offsetof
#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
@@ -47,6 +49,7 @@
#define CYTHON_COMPILING_IN_PYPY 1
#define CYTHON_COMPILING_IN_PYSTON 0
#define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_NOGIL 0
#undef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 0
#undef CYTHON_USE_PYTYPE_LOOKUP
@@ -83,10 +86,14 @@
#define CYTHON_USE_DICT_VERSIONS 0
#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_HEX >= 0x07030900)
+ #endif
#elif defined(PYSTON_VERSION)
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 1
#define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_NOGIL 0
#ifndef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 1
#endif
@@ -124,10 +131,59 @@
#define CYTHON_USE_DICT_VERSIONS 0
#undef CYTHON_USE_EXC_INFO_STACK
#define CYTHON_USE_EXC_INFO_STACK 0
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
+ #endif
+#elif defined(PY_NOGIL)
+ #define CYTHON_COMPILING_IN_PYPY 0
+ #define CYTHON_COMPILING_IN_PYSTON 0
+ #define CYTHON_COMPILING_IN_CPYTHON 0
+ #define CYTHON_COMPILING_IN_NOGIL 1
+ #ifndef CYTHON_USE_TYPE_SLOTS
+ #define CYTHON_USE_TYPE_SLOTS 1
+ #endif
+ #undef CYTHON_USE_PYTYPE_LOOKUP
+ #define CYTHON_USE_PYTYPE_LOOKUP 0
+ #ifndef CYTHON_USE_ASYNC_SLOTS
+ #define CYTHON_USE_ASYNC_SLOTS 1
+ #endif
+ #undef CYTHON_USE_PYLIST_INTERNALS
+ #define CYTHON_USE_PYLIST_INTERNALS 0
+ #ifndef CYTHON_USE_UNICODE_INTERNALS
+ #define CYTHON_USE_UNICODE_INTERNALS 1
+ #endif
+ #undef CYTHON_USE_UNICODE_WRITER
+ #define CYTHON_USE_UNICODE_WRITER 0
+ #undef CYTHON_USE_PYLONG_INTERNALS
+ #define CYTHON_USE_PYLONG_INTERNALS 0
+ #ifndef CYTHON_AVOID_BORROWED_REFS
+ #define CYTHON_AVOID_BORROWED_REFS 0
+ #endif
+ #ifndef CYTHON_ASSUME_SAFE_MACROS
+ #define CYTHON_ASSUME_SAFE_MACROS 1
+ #endif
+ #ifndef CYTHON_UNPACK_METHODS
+ #define CYTHON_UNPACK_METHODS 1
+ #endif
+ #undef CYTHON_FAST_THREAD_STATE
+ #define CYTHON_FAST_THREAD_STATE 0
+ #undef CYTHON_FAST_PYCALL
+ #define CYTHON_FAST_PYCALL 0
+ #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
+ #define CYTHON_PEP489_MULTI_PHASE_INIT 1
+ #endif
+ #ifndef CYTHON_USE_TP_FINALIZE
+ #define CYTHON_USE_TP_FINALIZE 1
+ #endif
+ #undef CYTHON_USE_DICT_VERSIONS
+ #define CYTHON_USE_DICT_VERSIONS 0
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_PYSTON 0
#define CYTHON_COMPILING_IN_CPYTHON 1
+ #define CYTHON_COMPILING_IN_NOGIL 0
#ifndef CYTHON_USE_TYPE_SLOTS
#define CYTHON_USE_TYPE_SLOTS 1
#endif
@@ -155,7 +211,7 @@
#ifndef CYTHON_USE_UNICODE_INTERNALS
#define CYTHON_USE_UNICODE_INTERNALS 1
#endif
- #if PY_VERSION_HEX < 0x030300F0
+ #if PY_VERSION_HEX < 0x030300F0 || PY_VERSION_HEX >= 0x030B00A2
#undef CYTHON_USE_UNICODE_WRITER
#define CYTHON_USE_UNICODE_WRITER 0
#elif !defined(CYTHON_USE_UNICODE_WRITER)
@@ -170,11 +226,14 @@
#ifndef CYTHON_UNPACK_METHODS
#define CYTHON_UNPACK_METHODS 1
#endif
- #ifndef CYTHON_FAST_THREAD_STATE
+ #if PY_VERSION_HEX >= 0x030B00A4
+ #undef CYTHON_FAST_THREAD_STATE
+ #define CYTHON_FAST_THREAD_STATE 0
+ #elif !defined(CYTHON_FAST_THREAD_STATE)
#define CYTHON_FAST_THREAD_STATE 1
#endif
#ifndef CYTHON_FAST_PYCALL
- #define CYTHON_FAST_PYCALL 1
+ #define CYTHON_FAST_PYCALL (PY_VERSION_HEX < 0x030A0000)
#endif
#ifndef CYTHON_PEP489_MULTI_PHASE_INIT
#define CYTHON_PEP489_MULTI_PHASE_INIT (PY_VERSION_HEX >= 0x03050000)
@@ -185,15 +244,23 @@
#ifndef CYTHON_USE_DICT_VERSIONS
#define CYTHON_USE_DICT_VERSIONS (PY_VERSION_HEX >= 0x030600B1)
#endif
- #ifndef CYTHON_USE_EXC_INFO_STACK
+ #if PY_VERSION_HEX >= 0x030B00A4
+ #undef CYTHON_USE_EXC_INFO_STACK
+ #define CYTHON_USE_EXC_INFO_STACK 0
+ #elif !defined(CYTHON_USE_EXC_INFO_STACK)
#define CYTHON_USE_EXC_INFO_STACK (PY_VERSION_HEX >= 0x030700A3)
#endif
+ #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
+ #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
+ #endif
#endif
#if !defined(CYTHON_FAST_PYCCALL)
#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >=
0x030600B1)
#endif
#if CYTHON_USE_PYLONG_INTERNALS
- #include "longintrepr.h"
+ #if PY_MAJOR_VERSION < 3
+ #include "longintrepr.h"
+ #endif
#undef SHIFT
#undef BASE
#undef MASK
@@ -310,9 +377,68 @@
#define __Pyx_DefaultClassType PyClass_Type
#else
#define __Pyx_BUILTIN_MODULE_NAME "builtins"
-#if PY_VERSION_HEX >= 0x030800A4 && PY_VERSION_HEX < 0x030800B2
- #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name,
fline, lnos)\
- PyCode_New(a, 0, k, l, s, f, code, c, n, v, fv, cell, fn, name,
fline, lnos)
+ #define __Pyx_DefaultClassType PyType_Type
+#if PY_VERSION_HEX >= 0x030B00A1
+ static CYTHON_INLINE PyCodeObject* __Pyx_PyCode_New(int a, int k, int l,
int s, int f,
+ PyObject *code, PyObject
*c, PyObject* n, PyObject *v,
+ PyObject *fv, PyObject
*cell, PyObject* fn,
+ PyObject *name, int fline,
PyObject *lnos) {
+ PyObject *kwds=NULL, *argcount=NULL, *posonlyargcount=NULL,
*kwonlyargcount=NULL;
+ PyObject *nlocals=NULL, *stacksize=NULL, *flags=NULL, *replace=NULL,
*call_result=NULL, *empty=NULL;
+ const char *fn_cstr=NULL;
+ const char *name_cstr=NULL;
+ PyCodeObject* co=NULL;
+ PyObject *type, *value, *traceback;
+ PyErr_Fetch(&type, &value, &traceback);
+ if (!(kwds=PyDict_New())) goto end;
+ if (!(argcount=PyLong_FromLong(a))) goto end;
+ if (PyDict_SetItemString(kwds, "co_argcount", argcount) != 0) goto end;
+ if (!(posonlyargcount=PyLong_FromLong(0))) goto end;
+ if (PyDict_SetItemString(kwds, "co_posonlyargcount", posonlyargcount)
!= 0) goto end;
+ if (!(kwonlyargcount=PyLong_FromLong(k))) goto end;
+ if (PyDict_SetItemString(kwds, "co_kwonlyargcount", kwonlyargcount) !=
0) goto end;
+ if (!(nlocals=PyLong_FromLong(l))) goto end;
+ if (PyDict_SetItemString(kwds, "co_nlocals", nlocals) != 0) goto end;
+ if (!(stacksize=PyLong_FromLong(s))) goto end;
+ if (PyDict_SetItemString(kwds, "co_stacksize", stacksize) != 0) goto
end;
+ if (!(flags=PyLong_FromLong(f))) goto end;
+ if (PyDict_SetItemString(kwds, "co_flags", flags) != 0) goto end;
+ if (PyDict_SetItemString(kwds, "co_code", code) != 0) goto end;
+ if (PyDict_SetItemString(kwds, "co_consts", c) != 0) goto end;
+ if (PyDict_SetItemString(kwds, "co_names", n) != 0) goto end;
+ if (PyDict_SetItemString(kwds, "co_varnames", v) != 0) goto end;
+ if (PyDict_SetItemString(kwds, "co_freevars", fv) != 0) goto end;
+ if (PyDict_SetItemString(kwds, "co_cellvars", cell) != 0) goto end;
+ if (PyDict_SetItemString(kwds, "co_linetable", lnos) != 0) goto end;
+ if (!(fn_cstr=PyUnicode_AsUTF8AndSize(fn, NULL))) goto end;
+ if (!(name_cstr=PyUnicode_AsUTF8AndSize(name, NULL))) goto end;
+ if (!(co = PyCode_NewEmpty(fn_cstr, name_cstr, fline))) goto end;
+ if (!(replace = PyObject_GetAttrString((PyObject*)co, "replace")))
goto cleanup_code_too;
+ if (!(empty = PyTuple_New(0))) goto cleanup_code_too; // unfortunately
__pyx_empty_tuple isn't available here
+ if (!(call_result = PyObject_Call(replace, empty, kwds))) goto
cleanup_code_too;
+ Py_XDECREF((PyObject*)co);
+ co = (PyCodeObject*)call_result;
+ call_result = NULL;
+ if (0) {
+ cleanup_code_too:
+ Py_XDECREF((PyObject*)co);
+ co = NULL;
+ }
+ end:
+ Py_XDECREF(kwds);
+ Py_XDECREF(argcount);
+ Py_XDECREF(posonlyargcount);
+ Py_XDECREF(kwonlyargcount);
+ Py_XDECREF(nlocals);
+ Py_XDECREF(stacksize);
+ Py_XDECREF(replace);
+ Py_XDECREF(call_result);
+ Py_XDECREF(empty);
+ if (type) {
+ PyErr_Restore(type, value, traceback);
+ }
+ return co;
+ }
#else
#define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name,
fline, lnos)\
PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline,
lnos)
@@ -426,8 +552,12 @@
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
#define CYTHON_PEP393_ENABLED 1
+ #if defined(PyUnicode_IS_READY)
#define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
0 : _PyUnicode_Ready((PyObject
*)(op)))
+ #else
+ #define __Pyx_PyUnicode_READY(op) (0)
+ #endif
#define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
#define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
#define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u)
@@ -436,7 +566,11 @@
#define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
#define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch)
#if defined(PyUnicode_IS_READY) && defined(PyUnicode_GET_SIZE)
+ #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
+ #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u))
? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
+ #else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u))
? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
+ #endif
#else
#define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_LENGTH(u))
#endif
@@ -542,10 +676,10 @@
#if PY_VERSION_HEX < 0x030200A4
typedef long Py_hash_t;
#define __Pyx_PyInt_FromHash_t PyInt_FromLong
- #define __Pyx_PyInt_AsHash_t PyInt_AsLong
+ #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsHash_t
#else
#define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
- #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
+ #define __Pyx_PyInt_AsHash_t __Pyx_PyIndex_AsSsize_t
#endif
#if PY_MAJOR_VERSION >= 3
#define __Pyx_PyMethod_New(func, self, klass) ((self) ? ((void)(klass),
PyMethod_New(func, self)) : __Pyx_NewRef(func))
@@ -570,8 +704,10 @@
} __Pyx_PyAsyncMethodsStruct;
#endif
-#if defined(WIN32) || defined(MS_WINDOWS)
- #define _USE_MATH_DEFINES
+#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
+ #if !defined(_USE_MATH_DEFINES)
+ #define _USE_MATH_DEFINES
+ #endif
#endif
#include <math.h>
#ifdef NAN
@@ -701,6 +837,7 @@
(likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) :
PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
+static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ?
PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
@@ -813,7 +950,7 @@
static const char *__pyx_f[] = {
- "test/demoappext-setuptools/demo/ext.pyx",
+ "ext.pyx",
};
/*--- Type declarations ---*/
@@ -987,6 +1124,11 @@
static void __Pyx_AddTraceback(const char *funcname, int c_line,
int py_line, const char *filename);
+/* GCCDiagnostics.proto */
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >=
6))
+#define __Pyx_HAS_GCC_DIAGNOSTIC
+#endif
+
/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
@@ -1028,19 +1170,19 @@
static const char __pyx_k_name[] = "__name__";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_print[] = "print";
+static const char __pyx_k_ext_pyx[] = "ext.pyx";
static const char __pyx_k_demo_ext[] = "demo.ext";
static const char __pyx_k_Extension_code[] = "Extension code";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
-static const char __pyx_k_test_demoappext_setuptools_demo[] =
"test/demoappext-setuptools/demo/ext.pyx";
-static PyObject *__pyx_kp_s_Extension_code;
+static PyObject *__pyx_kp_u_Extension_code;
static PyObject *__pyx_n_s_cline_in_traceback;
static PyObject *__pyx_n_s_demo_ext;
+static PyObject *__pyx_kp_s_ext_pyx;
static PyObject *__pyx_n_s_main;
static PyObject *__pyx_n_s_name;
static PyObject *__pyx_n_s_print;
static PyObject *__pyx_n_s_run;
static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_kp_s_test_demoappext_setuptools_demo;
static PyObject *__pyx_pf_4demo_3ext_run(CYTHON_UNUSED PyObject *__pyx_self);
/* proto */
static PyObject *__pyx_tuple_;
static PyObject *__pyx_codeobj__2;
@@ -1151,15 +1293,15 @@
#endif
static __Pyx_StringTabEntry __pyx_string_tab[] = {
- {&__pyx_kp_s_Extension_code, __pyx_k_Extension_code,
sizeof(__pyx_k_Extension_code), 0, 0, 1, 0},
+ {&__pyx_kp_u_Extension_code, __pyx_k_Extension_code,
sizeof(__pyx_k_Extension_code), 0, 1, 0, 0},
{&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback,
sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1},
{&__pyx_n_s_demo_ext, __pyx_k_demo_ext, sizeof(__pyx_k_demo_ext), 0, 0, 1,
1},
+ {&__pyx_kp_s_ext_pyx, __pyx_k_ext_pyx, sizeof(__pyx_k_ext_pyx), 0, 0, 1, 0},
{&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
{&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
{&__pyx_n_s_print, __pyx_k_print, sizeof(__pyx_k_print), 0, 0, 1, 1},
{&__pyx_n_s_run, __pyx_k_run, sizeof(__pyx_k_run), 0, 0, 1, 1},
{&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
- {&__pyx_kp_s_test_demoappext_setuptools_demo,
__pyx_k_test_demoappext_setuptools_demo,
sizeof(__pyx_k_test_demoappext_setuptools_demo), 0, 0, 1, 0},
{0, 0, 0, 0, 0, 0, 0}
};
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
@@ -1178,7 +1320,7 @@
* def run():
* print("Extension code") # <<<<<<<<<<<<<<
*/
- __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Extension_code); if
(unlikely(!__pyx_tuple_)) __PYX_ERR(0, 4, __pyx_L1_error)
+ __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_u_Extension_code); if
(unlikely(!__pyx_tuple_)) __PYX_ERR(0, 4, __pyx_L1_error)
__Pyx_GOTREF(__pyx_tuple_);
__Pyx_GIVEREF(__pyx_tuple_);
@@ -1188,7 +1330,7 @@
* def run(): # <<<<<<<<<<<<<<
* print("Extension code")
*/
- __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0,
CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple,
__pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple,
__pyx_kp_s_test_demoappext_setuptools_demo, __pyx_n_s_run, 3,
__pyx_empty_bytes); if (unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 3,
__pyx_L1_error)
+ __pyx_codeobj__2 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0,
CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple,
__pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple,
__pyx_kp_s_ext_pyx, __pyx_n_s_run, 3, __pyx_empty_bytes); if
(unlikely(!__pyx_codeobj__2)) __PYX_ERR(0, 3, __pyx_L1_error)
__Pyx_RefNannyFinishContext();
return 0;
__pyx_L1_error:;
@@ -1412,11 +1554,9 @@
#endif
/*--- Library function declarations ---*/
/*--- Threads initialization code ---*/
- #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
- #ifdef WITH_THREAD /* Python build with threading support? */
+ #if defined(WITH_THREAD) && PY_VERSION_HEX < 0x030700F0 &&
defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
PyEval_InitThreads();
#endif
- #endif
/*--- Module creation code ---*/
#if CYTHON_PEP489_MULTI_PHASE_INIT
__pyx_m = __pyx_pyinit_module;
@@ -1564,7 +1704,7 @@
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject
*arg, PyObject *kw) {
PyObject *result;
- ternaryfunc call = func->ob_type->tp_call;
+ ternaryfunc call = Py_TYPE(func)->tp_call;
if (unlikely(!call))
return PyObject_Call(func, arg, kw);
if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python
object")))
@@ -1662,7 +1802,7 @@
}
if (!use_cline) {
c_line = 0;
- PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback,
Py_False);
+ (void) PyObject_SetAttr(__pyx_cython_runtime,
__pyx_n_s_cline_in_traceback, Py_False);
}
else if (use_cline == Py_False || (use_cline != Py_True &&
PyObject_Not(use_cline) != 0)) {
c_line = 0;
@@ -1756,33 +1896,40 @@
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
+#if PY_VERSION_HEX >= 0x030b00a6
+ #ifndef Py_BUILD_CORE
+ #define Py_BUILD_CORE 1
+ #endif
+ #include "internal/pycore_frame.h"
+#endif
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
const char *funcname, int c_line,
int py_line, const char *filename) {
- PyCodeObject *py_code = 0;
- PyObject *py_srcfile = 0;
- PyObject *py_funcname = 0;
+ PyCodeObject *py_code = NULL;
+ PyObject *py_funcname = NULL;
#if PY_MAJOR_VERSION < 3
+ PyObject *py_srcfile = NULL;
py_srcfile = PyString_FromString(filename);
- #else
- py_srcfile = PyUnicode_FromString(filename);
- #endif
if (!py_srcfile) goto bad;
+ #endif
if (c_line) {
#if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname,
__pyx_cfilenm, c_line);
+ if (!py_funcname) goto bad;
#else
py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname,
__pyx_cfilenm, c_line);
+ if (!py_funcname) goto bad;
+ funcname = PyUnicode_AsUTF8(py_funcname);
+ if (!funcname) goto bad;
#endif
}
else {
#if PY_MAJOR_VERSION < 3
py_funcname = PyString_FromString(funcname);
- #else
- py_funcname = PyUnicode_FromString(funcname);
+ if (!py_funcname) goto bad;
#endif
}
- if (!py_funcname) goto bad;
+ #if PY_MAJOR_VERSION < 3
py_code = __Pyx_PyCode_New(
0,
0,
@@ -1801,11 +1948,16 @@
__pyx_empty_bytes /*PyObject *lnotab*/
);
Py_DECREF(py_srcfile);
- Py_DECREF(py_funcname);
+ #else
+ py_code = PyCode_NewEmpty(filename, funcname, py_line);
+ #endif
+ Py_XDECREF(py_funcname); // XDECREF since it's only set on Py3 if cline
return py_code;
bad:
- Py_XDECREF(py_srcfile);
Py_XDECREF(py_funcname);
+ #if PY_MAJOR_VERSION < 3
+ Py_XDECREF(py_srcfile);
+ #endif
return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
@@ -1813,14 +1965,24 @@
PyCodeObject *py_code = 0;
PyFrameObject *py_frame = 0;
PyThreadState *tstate = __Pyx_PyThreadState_Current;
+ PyObject *ptype, *pvalue, *ptraceback;
if (c_line) {
c_line = __Pyx_CLineForTraceback(tstate, c_line);
}
py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
if (!py_code) {
+ __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
py_code = __Pyx_CreateCodeObjectForTraceback(
funcname, c_line, py_line, filename);
- if (!py_code) goto bad;
+ if (!py_code) {
+ /* If the code object creation fails, then we should clear the
+ fetched exception references and propagate the new exception */
+ Py_XDECREF(ptype);
+ Py_XDECREF(pvalue);
+ Py_XDECREF(ptraceback);
+ goto bad;
+ }
+ __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
__pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
}
py_frame = PyFrame_New(
@@ -1839,7 +2001,14 @@
/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+ const long neg_one = (long) -1, const_zero = (long) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
const int is_unsigned = neg_one > const_zero;
if (is_unsigned) {
if (sizeof(long) < sizeof(long)) {
@@ -1892,7 +2061,14 @@
/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
- const long neg_one = (long) ((long) 0 - (long) 1), const_zero = (long) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+ const long neg_one = (long) -1, const_zero = (long) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -2081,7 +2257,14 @@
/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
- const int neg_one = (int) ((int) 0 - (int) 1), const_zero = (int) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wconversion"
+#endif
+ const int neg_one = (int) -1, const_zero = (int) 0;
+#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
+#pragma GCC diagnostic pop
+#endif
const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
if (likely(PyInt_Check(x))) {
@@ -2370,11 +2553,33 @@
/* CheckBinaryVersion */
static int __Pyx_check_binary_version(void) {
- char ctversion[4], rtversion[4];
- PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
- PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
- if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
+ char ctversion[5];
+ int same=1, i, found_dot;
+ const char* rt_from_call = Py_GetVersion();
+ PyOS_snprintf(ctversion, 5, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
+ found_dot = 0;
+ for (i = 0; i < 4; i++) {
+ if (!ctversion[i]) {
+ same = (rt_from_call[i] < '0' || rt_from_call[i] > '9');
+ break;
+ }
+ if (rt_from_call[i] != ctversion[i]) {
+ same = 0;
+ break;
+ }
+ }
+ if (!same) {
+ char rtversion[5] = {'\0'};
char message[200];
+ for (i=0; i<4; ++i) {
+ if (rt_from_call[i] == '.') {
+ if (found_dot) break;
+ found_dot = 1;
+ } else if (rt_from_call[i] < '0' || rt_from_call[i] > '9') {
+ break;
+ }
+ rtversion[i] = rt_from_call[i];
+ }
PyOS_snprintf(message, sizeof(message),
"compiletime version %s of module '%.100s' "
"does not match runtime version %s",
@@ -2632,6 +2837,23 @@
Py_DECREF(x);
return ival;
}
+static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
+ if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
+ return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
+#if PY_MAJOR_VERSION < 3
+ } else if (likely(PyInt_CheckExact(o))) {
+ return PyInt_AS_LONG(o);
+#endif
+ } else {
+ Py_ssize_t ival;
+ PyObject *x;
+ x = PyNumber_Index(o);
+ if (!x) return -1;
+ ival = PyInt_AsLong(x);
+ Py_DECREF(x);
+ return ival;
+ }
+}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/test/test_render.py
new/versioneer-0.28/test/test_render.py
--- old/versioneer-0.26/test/test_render.py 2022-09-06 19:08:48.000000000
+0200
+++ new/versioneer-0.28/test/test_render.py 2022-10-27 20:45:29.000000000
+0200
@@ -3,7 +3,7 @@
from versioneer import render
-class Testing_renderer_case_mixin(object):
+class Testing_renderer_case_mixin:
"""
This is a mixin object which can be combined with a unittest.TestCase
which defines a style and an expected dictionary. See Test_pep440 for
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/tox.ini new/versioneer-0.28/tox.ini
--- old/versioneer-0.26/tox.ini 2022-09-06 19:08:48.000000000 +0200
+++ new/versioneer-0.28/tox.ini 2022-10-27 20:45:29.000000000 +0200
@@ -4,7 +4,7 @@
# and then run "tox" from this directory.
[tox]
-envlist = py{37,38,39,310,py3}-{linux,windows}
+envlist = py{37,38,39,310,311,py3}-{linux,windows}
skip_missing_interpreters = True
[flake8]
@@ -16,6 +16,7 @@
3.8: py38
3.9: py39
3.10: py310
+ 3.11: py311
pypy-3.9: pypy3
[gh-actions:env]
@@ -33,7 +34,7 @@
packaging>=20
pip>=20
build
- tomli
+ tomli; python_version < "3.11"
!pypy3: mypy
commands =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/versioneer.egg-info/PKG-INFO
new/versioneer-0.28/versioneer.egg-info/PKG-INFO
--- old/versioneer-0.26/versioneer.egg-info/PKG-INFO 2022-09-06
19:09:01.000000000 +0200
+++ new/versioneer-0.28/versioneer.egg-info/PKG-INFO 2022-10-27
20:45:45.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: versioneer
-Version: 0.26
+Version: 0.28
Summary: Easy VCS-based management of project version strings
Author: Brian Warner
Maintainer-email: Christopher Markiewicz <[email protected]>, Nathan Buckner
<[email protected]>
@@ -69,21 +69,27 @@
### Vendored mode
* `pip install versioneer` to somewhere in your $PATH
-* add a `[tool.versioneer]` section to your `pyproject.toml or a
+ * A [conda-forge
recipe](https://github.com/conda-forge/versioneer-feedstock) is
+ available, so you can also use `conda install -c conda-forge versioneer`
+* add a `[tool.versioneer]` section to your `pyproject.toml` or a
`[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md))
+ * Note that you will need to add `tomli; python_version < "3.11"` to your
+ build-time dependencies if you use `pyproject.toml`
* run `versioneer install --vendor` in your source tree, commit the results
* verify version information with `python setup.py version`
### Build-time dependency mode
* `pip install versioneer` to somewhere in your $PATH
-* add a `[tool.versioneer]` section to your `pyproject.toml or a
+ * A [conda-forge
recipe](https://github.com/conda-forge/versioneer-feedstock) is
+ available, so you can also use `conda install -c conda-forge versioneer`
+* add a `[tool.versioneer]` section to your `pyproject.toml` or a
`[versioneer]` section to your `setup.cfg` (see [Install](INSTALL.md))
-* add `versioneer` to the `requires` key of the `build-system` table in
- `pyproject.toml`:
+* add `versioneer` (with `[toml]` extra, if configuring in `pyproject.toml`)
+ to the `requires` key of the `build-system` table in `pyproject.toml`:
```toml
[build-system]
- requires = ["setuptools", "versioneer"]
+ requires = ["setuptools", "versioneer[toml]"]
build-backend = "setuptools.build_meta"
```
* run `versioneer install --no-vendor` in your source tree, commit the results
@@ -325,9 +331,8 @@
To make Versioneer easier to embed, all its code is dedicated to the public
domain. The `_version.py` that it creates is also in the public domain.
-Specifically, both are released under the Creative Commons "Public Domain
-Dedication" license (CC0-1.0), as described in
-https://creativecommons.org/publicdomain/zero/1.0/ .
+Specifically, both are released under the "Unlicense", as described in
+https://unlicense.org/.
[pypi-image]: https://img.shields.io/pypi/v/versioneer.svg
[pypi-url]: https://pypi.python.org/pypi/versioneer/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/versioneer.egg-info/SOURCES.txt
new/versioneer-0.28/versioneer.egg-info/SOURCES.txt
--- old/versioneer-0.26/versioneer.egg-info/SOURCES.txt 2022-09-06
19:09:01.000000000 +0200
+++ new/versioneer-0.28/versioneer.egg-info/SOURCES.txt 2022-10-27
20:45:45.000000000 +0200
@@ -6,7 +6,6 @@
details.md
developers.md
pyproject.toml
-setup.cfg
setup.py
tox.ini
src/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/versioneer-0.26/versioneer.egg-info/requires.txt
new/versioneer-0.28/versioneer.egg-info/requires.txt
--- old/versioneer-0.26/versioneer.egg-info/requires.txt 2022-09-06
19:09:01.000000000 +0200
+++ new/versioneer-0.28/versioneer.egg-info/requires.txt 2022-10-27
20:45:45.000000000 +0200
@@ -1,3 +1,5 @@
[toml]
+
+[toml:python_version < "3.11"]
tomli