Skip to content
Snippets Groups Projects
Commit 845f534d authored by Sandro Tosi's avatar Sandro Tosi
Browse files

New upstream version 1.5.0

parent 0b8bb114
No related branches found
No related tags found
No related merge requests found
Showing
with 493 additions and 583 deletions
......@@ -35,30 +35,6 @@ environment:
PYTHON_ARCH: '64'
WHEEL_PATH: .tox/dist
WINDOWS_SDK_VERSION: v7.0
- TOXENV: py34-cover,codecov,coveralls
TOXPYTHON: C:\Python34\python.exe
PYTHON_HOME: C:\Python34
PYTHON_VERSION: '3.4'
PYTHON_ARCH: '32'
- TOXENV: py34-cover,codecov,coveralls
TOXPYTHON: C:\Python34-x64\python.exe
PYTHON_HOME: C:\Python34-x64
PYTHON_VERSION: '3.4'
PYTHON_ARCH: '64'
WINDOWS_SDK_VERSION: v7.1
- TOXENV: py34-nocov
TOXPYTHON: C:\Python34\python.exe
PYTHON_HOME: C:\Python34
PYTHON_VERSION: '3.4'
PYTHON_ARCH: '32'
WHEEL_PATH: .tox/dist
- TOXENV: py34-nocov
TOXPYTHON: C:\Python34-x64\python.exe
PYTHON_HOME: C:\Python34-x64
PYTHON_VERSION: '3.4'
PYTHON_ARCH: '64'
WHEEL_PATH: .tox/dist
WINDOWS_SDK_VERSION: v7.1
- TOXENV: py35-cover,codecov,coveralls
TOXPYTHON: C:\Python35\python.exe
PYTHON_HOME: C:\Python35
......
[bumpversion]
current_version = 1.4.3
current_version = 1.5.0
commit = True
tag = True
......
tidelift: "pypi/lazy-object-proxy"
......@@ -31,14 +31,6 @@ matrix:
- WHEEL_MANYLINUX1=cp27
- WHEEL_PATH=wheelhouse
python: '2.7'
- env:
- TOXENV=py34-cover,codecov,extension-coveralls,coveralls
python: '3.4'
- env:
- TOXENV=py34-nocov
- WHEEL_MANYLINUX1=cp34
- WHEEL_PATH=wheelhouse
python: '3.4'
- env:
- TOXENV=py35-cover,codecov,extension-coveralls,coveralls
python: '3.5'
......
......@@ -2,6 +2,12 @@
Changelog
=========
1.5.0 (2020-06-05)
------------------
* Added support for ``__fspath__``.
* Dropped support for Python 3.4.
1.4.3 (2019-10-26)
------------------
......
Metadata-Version: 1.2
Name: lazy-object-proxy
Version: 1.4.3
Version: 1.5.0
Summary: A fast and thorough lazy object proxy.
Home-page: https://github.com/ionelmc/python-lazy-object-proxy
Author: Ionel Cristian Mărieș
......@@ -74,6 +74,12 @@ Description: ========
Changelog
=========
1.5.0 (2020-06-05)
------------------
* Added support for ``__fspath__``.
* Dropped support for Python 3.4.
1.4.3 (2019-10-26)
------------------
......@@ -153,7 +159,6 @@ Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
......
......@@ -43,9 +43,9 @@ Overview
:alt: PyPI Package latest release
:target: https://pypi.org/project/lazy-object-proxy
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-lazy-object-proxy/v1.4.3.svg
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-lazy-object-proxy/v1.5.0.svg
:alt: Commits since latest release
:target: https://github.com/ionelmc/python-lazy-object-proxy/compare/v1.4.3...master
:target: https://github.com/ionelmc/python-lazy-object-proxy/compare/v1.5.0...master
.. |wheel| image:: https://img.shields.io/pypi/wheel/lazy-object-proxy.svg
:alt: PyPI Wheel
......
; a generative tox configuration, see: https://tox.readthedocs.io/en/latest/config.html#generative-envlist
[tox]
envlist =
clean,
check,
docs,
{py27,py34,py35,py36,py37,py38,pypy,pypy3}-{cover,nocov},
report
ignore_basepython_conflict = true
[testenv]
wheel = true
basepython =
pypy: {env:TOXPYTHON:pypy}
pypy3: {env:TOXPYTHON:pypy3}
py27: {env:TOXPYTHON:python2.7}
py34: {env:TOXPYTHON:python3.4}
py35: {env:TOXPYTHON:python3.5}
{py36,docs,spell}: {env:TOXPYTHON:python3.6}
py37: {env:TOXPYTHON:python3.7}
py38: {env:TOXPYTHON:python3.8}
{bootstrap,clean,check,report,codecov,coveralls,extension-coveralls}: {env:TOXPYTHON:python3}
setenv =
PYTHONPATH={toxinidir}/tests
PYTHONUNBUFFERED=yes
passenv =
*
usedevelop =
cover: true
nocov: false
deps =
pytest
pytest-benchmark
pytest-travis-fold
Django==1.11.23
objproxies==0.9.4
cover: pytest-cov
commands =
cover: python setup.py clean --all build_ext --force --inplace
nocov: {posargs:pytest -vv --ignore=src}
cover: {posargs:pytest --cov --cov-report=term-missing -vv}
[testenv:bootstrap]
deps =
jinja2
matrix
skip_install = true
commands =
python ci/bootstrap.py
[testenv:check]
deps =
docutils
flake8
readme-renderer
pygments
isort
skip_install = true
commands =
python setup.py check --strict --metadata --restructuredtext
flake8 src tests setup.py
isort --verbose --check-only --diff --recursive src tests setup.py
[testenv:spell]
setenv =
SPELLCHECK=1
commands =
sphinx-build -b spelling docs dist/docs
skip_install = true
deps =
-r{toxinidir}/docs/requirements.txt
sphinxcontrib-spelling
pyenchant
[testenv:docs]
deps =
-r{toxinidir}/docs/requirements.txt
usedevelop = true
install_command =
python -m pip install --no-use-pep517 {opts} {packages}
commands =
sphinx-build {posargs:-E} -b html docs dist/docs
sphinx-build -b linkcheck docs dist/docs
[testenv:coveralls]
deps =
coveralls
skip_install = true
commands =
coveralls {env:COVERALLS_EXTRAS:--merge=extension-coveralls.json} []
[testenv:extension-coveralls]
deps =
cpp-coveralls
skip_install = true
commands =
coveralls --build-root=. --include=src --dump=extension-coveralls.json []
[testenv:codecov]
deps =
codecov
skip_install = true
commands =
codecov []
[testenv:report]
deps = coverage
skip_install = true
commands =
coverage report
coverage html
[testenv:clean]
commands = coverage erase
skip_install = true
deps = coverage
{% for env in tox_environments %}{% if '-cover' in env %}{{ '' }}
[testenv:{{ env }}]
setenv =
SETUPPY_CFLAGS=-coverage
{% endif %}{% endfor %}
......@@ -31,7 +31,7 @@ try:
version = release = get_distribution('lazy_object_proxy').version
except Exception:
traceback.print_exc()
version = release = '1.4.3'
version = release = '1.5.0'
pygments_style = 'trac'
templates_path = ['.']
......
......@@ -5,6 +5,7 @@ from __future__ import print_function
import io
import os
import platform
import re
from glob import glob
from os.path import basename
......@@ -30,8 +31,12 @@ def read(*names, **kwargs):
# Enable code coverage for C code: we can't use CFLAGS=-coverage in tox.ini, since that may mess with compiling
# dependencies (e.g. numpy). Therefore we set SETUPPY_CFLAGS=-coverage in tox.ini and copy it to CFLAGS here (after
# deps have been safely installed).
if 'TOXENV' in os.environ and 'SETUPPY_CFLAGS' in os.environ:
os.environ['CFLAGS'] = os.environ['SETUPPY_CFLAGS']
if 'TOXENV' in os.environ and os.environ.get('SETUPPY_GCOV') == 'enabled' and platform.system() == 'Linux':
CFLAGS = ['-fprofile-arcs', '-ftest-coverage']
LFLAGS = ['-lgcov']
else:
CFLAGS = []
LFLAGS = []
class optional_build_ext(build_ext):
......@@ -63,7 +68,7 @@ setup(
use_scm_version={
'local_scheme': 'dirty-tag',
'write_to': 'src/lazy_object_proxy/_version.py',
'fallback_version': '1.4.3',
'fallback_version': '1.5.0',
},
license='BSD-2-Clause',
description='A fast and thorough lazy object proxy.',
......@@ -90,7 +95,6 @@ setup(
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
......@@ -125,6 +129,8 @@ setup(
Extension(
splitext(relpath(path, 'src').replace(os.sep, '.'))[0],
sources=[path],
extra_compile_args=CFLAGS,
extra_link_args=LFLAGS,
include_dirs=[dirname(path)]
)
for root, _, _ in os.walk('src')
......
Metadata-Version: 1.2
Name: lazy-object-proxy
Version: 1.4.3
Version: 1.5.0
Summary: A fast and thorough lazy object proxy.
Home-page: https://github.com/ionelmc/python-lazy-object-proxy
Author: Ionel Cristian Mărieș
......@@ -74,6 +74,12 @@ Description: ========
Changelog
=========
1.5.0 (2020-06-05)
------------------
* Added support for ``__fspath__``.
* Dropped support for Python 3.4.
1.4.3 (2019-10-26)
------------------
......@@ -153,7 +159,6 @@ Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
......
......@@ -14,13 +14,13 @@ pyproject.toml
setup.cfg
setup.py
tox.ini
.github/FUNDING.yml
ci/appveyor-download.py
ci/appveyor-with-compiler.cmd
ci/bootstrap.py
ci/requirements.txt
ci/templates/.appveyor.yml
ci/templates/.travis.yml
ci/templates/tox.ini
docs/authors.rst
docs/changelog.rst
docs/conf.py
......
......@@ -18,6 +18,6 @@ else:
try:
from ._version import version as __version__
except ImportError:
__version__ = '1.4.3'
__version__ = '1.5.0'
__all__ = "Proxy",
# coding: utf-8
# file generated by setuptools_scm
# don't change, don't track in version control
version = '1.4.3'
version = '1.5.0'
......@@ -222,6 +222,35 @@ static PyObject *Proxy_str(ProxyObject *self)
/* ------------------------------------------------------------------------- */
static PyObject *Proxy_fspath(ProxyObject *self)
{
PyObject *method = NULL;
PyObject *fspath = NULL;
Proxy__ENSURE_WRAPPED_OR_RETURN_NULL(self);
if (PyUnicode_Check(self->wrapped) || PyBytes_Check(self->wrapped)) {
Py_INCREF(self->wrapped);
return self->wrapped;
}
method = PyObject_GetAttrString(self->wrapped, "__fspath__");
if (!method) {
PyErr_Clear();
Py_INCREF(self->wrapped);
return self->wrapped;
}
fspath = PyObject_CallFunctionObjArgs(method, NULL);
Py_DECREF(method);
return fspath;
}
/* ------------------------------------------------------------------------- */
static PyObject *Proxy_add(PyObject *o1, PyObject *o2)
{
Proxy__WRAPPED_REPLACE_OR_RETURN_NULL(o1);
......@@ -1282,6 +1311,7 @@ static PyMethodDef Proxy_methods[] = {
{ "__reversed__", (PyCFunction)Proxy_reversed, METH_NOARGS, 0 },
{ "__reduce__", (PyCFunction)Proxy_reduce, METH_NOARGS, 0 },
{ "__reduce_ex__", (PyCFunction)Proxy_reduce, METH_O, 0 },
{ "__fspath__", (PyCFunction)Proxy_fspath, METH_NOARGS, 0 },
#if PY_MAJOR_VERSION >= 3
{ "__round__", (PyCFunction)Proxy_round, METH_NOARGS, 0 },
#endif
......
......@@ -3,6 +3,11 @@ import sys
PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
if PY3:
string_types = str, bytes
else:
string_types = basestring, # noqa: F821
def with_metaclass(meta, *bases):
"""Create a base class with a metaclass."""
......
......@@ -2,6 +2,7 @@ import operator
from .compat import PY2
from .compat import PY3
from .compat import string_types
from .compat import with_metaclass
from .utils import cached_property
from .utils import identity
......@@ -100,6 +101,17 @@ class Proxy(with_metaclass(_ProxyMetaType)):
self.__factory__
)
def __fspath__(self):
wrapped = self.__wrapped__
if isinstance(wrapped, string_types):
return wrapped
else:
fspath = getattr(wrapped, '__fspath__', None)
if fspath is None:
return wrapped
else:
return fspath()
__reversed__ = make_proxy_method(reversed)
if PY3:
......
......@@ -2,6 +2,7 @@ import operator
from .compat import PY2
from .compat import PY3
from .compat import string_types
from .compat import with_metaclass
from .utils import identity
......@@ -115,8 +116,8 @@ class Proxy(with_metaclass(_ProxyMetaType)):
def __class__(self):
return self.__wrapped__.__class__
@__class__.setter # noqa
def __class__(self, value):
@__class__.setter # noqa: F811
def __class__(self, value): # noqa: F811
self.__wrapped__.__class__ = value
@property
......@@ -152,6 +153,17 @@ class Proxy(with_metaclass(_ProxyMetaType)):
self.__factory__
)
def __fspath__(self):
wrapped = self.__wrapped__
if isinstance(wrapped, string_types):
return wrapped
else:
fspath = getattr(wrapped, '__fspath__', None)
if fspath is None:
return wrapped
else:
return fspath()
def __reversed__(self):
return reversed(self.__wrapped__)
......
This diff is collapsed.
......@@ -5,12 +5,11 @@ envlist =
clean,
check,
docs,
{py27,py34,py35,py36,py37,py38,pypy,pypy3}-{cover,nocov},
{py27,py35,py36,py37,py38,pypy,pypy3}-{cover,nocov},
report
ignore_basepython_conflict = true
[testenv]
wheel = true
basepython =
pypy: {env:TOXPYTHON:pypy}
pypy3: {env:TOXPYTHON:pypy3}
......@@ -24,16 +23,20 @@ basepython =
setenv =
PYTHONPATH={toxinidir}/tests
PYTHONUNBUFFERED=yes
cover: SETUPPY_GCOV=enabled
passenv =
*
usedevelop =
cover: true
nocov: false
wheel =
cover: false
nocov: true
deps =
pytest
pytest-benchmark
pytest-travis-fold
Django==1.11.23
Django
objproxies==0.9.4
cover: pytest-cov
commands =
......@@ -102,7 +105,8 @@ deps =
codecov
skip_install = true
commands =
codecov []
codecov --gcov-root=. []
[testenv:report]
deps = coverage
......@@ -115,43 +119,3 @@ commands =
commands = coverage erase
skip_install = true
deps = coverage
[testenv:py27-cover]
setenv =
SETUPPY_CFLAGS=-coverage
[testenv:py34-cover]
setenv =
SETUPPY_CFLAGS=-coverage
[testenv:py35-cover]
setenv =
SETUPPY_CFLAGS=-coverage
[testenv:py36-cover]
setenv =
SETUPPY_CFLAGS=-coverage
[testenv:py37-cover]
setenv =
SETUPPY_CFLAGS=-coverage
[testenv:py38-cover]
setenv =
SETUPPY_CFLAGS=-coverage
[testenv:pypy-cover]
setenv =
SETUPPY_CFLAGS=-coverage
[testenv:pypy3-cover]
setenv =
SETUPPY_CFLAGS=-coverage
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment