From da295adb8c1ba1ad148bc927e94be440f46b304e Mon Sep 17 00:00:00 2001 From: DongHun Kwak Date: Tue, 5 Mar 2024 18:28:28 +0900 Subject: [PATCH] Imported Upstream version 1.10.0 --- .appveyor.yml | 29 ---- .github/workflows/main.yml | 68 ++++++++ .travis.yml | 68 -------- CHANGELOG => CHANGELOG.rst | 7 + MANIFEST.in | 2 +- PKG-INFO | 67 -------- README.rst | 13 +- HOWTORELEASE.rst => RELEASING.rst | 2 +- doc/changelog.txt | 2 +- py.egg-info/PKG-INFO | 67 -------- py.egg-info/SOURCES.txt | 149 ------------------ py.egg-info/dependency_links.txt | 1 - py.egg-info/not-zip-safe | 1 - py.egg-info/top_level.txt | 1 - py/_path/svnwc.py | 2 +- .../apipkg-1.4.dist-info/DESCRIPTION.rst | 87 ---------- .../apipkg-1.4.dist-info/RECORD | 9 -- .../apipkg-1.4.dist-info/metadata.json | 1 - .../INSTALLER | 0 .../METADATA | 40 +++-- .../apipkg-1.5.dist-info/RECORD | 10 ++ .../apipkg-1.5.dist-info/REQUESTED | 0 .../WHEEL | 2 +- .../top_level.txt | 0 .../{apipkg.py => apipkg/__init__.py} | 26 +-- .../apipkg/version.py} | 2 +- .../iniconfig-1.0.0.dist-info/DESCRIPTION.rst | 53 ------- .../iniconfig-1.0.0.dist-info/RECORD | 9 -- .../iniconfig-1.0.0.dist-info/WHEEL | 5 - .../iniconfig-1.0.0.dist-info/metadata.json | 1 - .../INSTALLER | 0 .../iniconfig-1.1.1.dist-info/LICENSE | 19 +++ .../METADATA | 6 +- .../iniconfig-1.1.1.dist-info/RECORD | 11 ++ .../iniconfig-1.1.1.dist-info/REQUESTED | 0 .../iniconfig-1.1.1.dist-info/WHEEL | 6 + .../top_level.txt | 0 .../{iniconfig.py => iniconfig/__init__.py} | 0 py/_vendored_packages/iniconfig/__init__.pyi | 31 ++++ py/_vendored_packages/iniconfig/py.typed | 0 py/iniconfig.pyi | 20 +-- setup.cfg | 7 +- tasks/__init__.py | 12 -- tasks/vendoring.py | 44 ++++-- testing/code/test_source.py | 22 ++- testing/path/test_local.py | 3 +- 46 files changed, 263 insertions(+), 642 deletions(-) delete mode 100644 .appveyor.yml create mode 100644 .github/workflows/main.yml delete mode 100644 .travis.yml rename CHANGELOG => CHANGELOG.rst (99%) delete mode 100644 PKG-INFO rename HOWTORELEASE.rst => RELEASING.rst (90%) delete mode 100644 py.egg-info/PKG-INFO delete mode 100644 py.egg-info/SOURCES.txt delete mode 100644 py.egg-info/dependency_links.txt delete mode 100644 py.egg-info/not-zip-safe delete mode 100644 py.egg-info/top_level.txt delete mode 100644 py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst delete mode 100644 py/_vendored_packages/apipkg-1.4.dist-info/RECORD delete mode 100644 py/_vendored_packages/apipkg-1.4.dist-info/metadata.json rename py/_vendored_packages/{apipkg-1.4.dist-info => apipkg-1.5.dist-info}/INSTALLER (100%) rename py/_vendored_packages/{apipkg-1.4.dist-info => apipkg-1.5.dist-info}/METADATA (69%) create mode 100644 py/_vendored_packages/apipkg-1.5.dist-info/RECORD create mode 100644 py/_vendored_packages/apipkg-1.5.dist-info/REQUESTED rename py/_vendored_packages/{apipkg-1.4.dist-info => apipkg-1.5.dist-info}/WHEEL (70%) rename py/_vendored_packages/{apipkg-1.4.dist-info => apipkg-1.5.dist-info}/top_level.txt (100%) rename py/_vendored_packages/{apipkg.py => apipkg/__init__.py} (90%) rename py/{_version.py => _vendored_packages/apipkg/version.py} (84%) delete mode 100644 py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst delete mode 100644 py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD delete mode 100644 py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL delete mode 100644 py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json rename py/_vendored_packages/{iniconfig-1.0.0.dist-info => iniconfig-1.1.1.dist-info}/INSTALLER (100%) create mode 100644 py/_vendored_packages/iniconfig-1.1.1.dist-info/LICENSE rename py/_vendored_packages/{iniconfig-1.0.0.dist-info => iniconfig-1.1.1.dist-info}/METADATA (96%) create mode 100644 py/_vendored_packages/iniconfig-1.1.1.dist-info/RECORD create mode 100644 py/_vendored_packages/iniconfig-1.1.1.dist-info/REQUESTED create mode 100644 py/_vendored_packages/iniconfig-1.1.1.dist-info/WHEEL rename py/_vendored_packages/{iniconfig-1.0.0.dist-info => iniconfig-1.1.1.dist-info}/top_level.txt (100%) rename py/_vendored_packages/{iniconfig.py => iniconfig/__init__.py} (100%) create mode 100644 py/_vendored_packages/iniconfig/__init__.pyi create mode 100644 py/_vendored_packages/iniconfig/py.typed diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index ecb6459..0000000 --- a/.appveyor.yml +++ /dev/null @@ -1,29 +0,0 @@ -environment: - matrix: - # note: please use "tox --listenvs" to populate the build matrix below - - TOXENV: "py27-pytest29" - - TOXENV: "py27-pytest30" - - TOXENV: "py27-pytest31" - - TOXENV: "py35-pytest29" - - TOXENV: "py35-pytest30" - - TOXENV: "py35-pytest31" - - TOXENV: "py36-pytest29" - - TOXENV: "py36-pytest30" - - TOXENV: "py36-pytest31" - - TOXENV: "py37-pytest30" - - TOXENV: "py37-pytest31" - -install: - - echo Installed Pythons - - dir c:\Python* - - - C:\Python37\python -m pip install --upgrade --pre tox - -build: false # Not a C# project, build stuff at the test step instead. - -test_script: - - C:\Python37\python -m tox - -# We don't deploy anything on tags with AppVeyor, we use Travis instead, so we -# might as well save resources -skip_tags: true diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..0192a42 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,68 @@ +name: build + +on: [push, pull_request] + +jobs: + build: + + runs-on: ${{ matrix.os }} + + strategy: + fail-fast: false + matrix: + python: ["2.7", "3.5", "3.6", "3.7", "3.8", "pypy3"] + os: [ubuntu-latest, windows-latest] + include: + - python: "2.7" + tox_env: "py27-pytest30" + - python: "3.5" + tox_env: "py35-pytest30" + - python: "3.6" + tox_env: "py36-pytest30" + - python: "3.7" + tox_env: "py37-pytest30" + - python: "3.8" + tox_env: "py38-pytest30" + - python: "pypy3" + tox_env: "pypy3-pytest30" + + steps: + - uses: actions/checkout@v1 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: ${{ matrix.python }} + - name: Install tox + run: | + python -m pip install --upgrade pip + pip install tox + - name: Test + run: | + tox -e ${{ matrix.tox_env }} + + deploy: + + if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') + + runs-on: ubuntu-latest + + needs: build + + steps: + - uses: actions/checkout@v1 + - name: Set up Python + uses: actions/setup-python@v1 + with: + python-version: "3.7" + - name: Install wheel + run: | + python -m pip install --upgrade pip + pip install wheel + - name: Build package + run: | + python setup.py sdist bdist_wheel + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@master + with: + user: __token__ + password: ${{ secrets.pypi_token }} diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 25fb8ca..0000000 --- a/.travis.yml +++ /dev/null @@ -1,68 +0,0 @@ -dist: xenial -language: python - -python: - - '2.7' - - '3.5' - - '3.6' - - '3.7' - # - 'pypy' - - 'pypy3' - -env: - global: - - COVERAGE_PROCESS_START=$PWD/tox.ini - matrix: - - DEPS="pytest~=2.9.0" - - DEPS="pytest~=3.0.0" - #- DEPS="pytest~=3.1.0" - -stages: - - name: test - if: tag IS NOT present - - name: deploy - if: repo = pytest-dev/py AND tag IS present - -matrix: - include: - - python: '2.7' - # using a different option due to pytest-addopts pytester issues - env: PYTEST_XADDOPTS="-n auto --runslowtests" DEPS="pytest~=3.0.0 pytest-xdist<1.25 pytest-forked<0.3" - - - stage: deploy - python: '3.6' - env: - install: pip install -U setuptools setuptools_scm - script: skip - deploy: - provider: pypi - user: nicoddemus - distributions: sdist bdist_wheel - skip_upload_docs: true - password: - secure: VNYW/sZoD+9DzKCe6vANNXXJR7jP7rwySafQ33N1jAnCrdylQjEN/p6tSfUe8jDi3wDpLPL9h8pwfxuUT7CRxglHov3Qe7zSeywixvHan5aFahQiQ8+gucYIM7wITHH3oQs7jN35pnhdnF+QlW2+eDCL6qOLU5XwuRhsDKXjQ/hUWR5hlX5EniD1gzyKEf6j1YCpST87tKpeLwVEYEmsucdkUZuXhxDtyaWQHWiPsLWwh/slQtUJEHeLF26r8UxFy0RiGne9jR+CzRfH5ktcA9/pArvp4VuwOii+1TDxVSYP7+I8Z+eUKN9JBg12QLaHwoIN/8J+MvHCkuf+OGSLM3sEyNRJGDev372xg3K7ylIkeeK4WXirKEp2ojgN8tniloDjnwdu/gPWBnrXuooA60tNoByHFa8KbMZAr2B2sQeMxD4VZGr1N8l0rX4gRTrwvdk3i3ulLKVSwkXaGn+GrfZTTboa7dEnpuma8tv1niNCSpStYIy7atS8129+5ijV3OC8DzOMh/rVbO9WsDb/RPG3yjFiDvEJPIPeE0l/m5u42QBqtdZSS2ia7UWTJBiEY09uFMTRmH5hhE/1aiYBbvAztf5CReUbeKdSQz3L8TTSZqewtFZmXTkX97/xQnrEpsnGezIM2DNuMEuQG3MxGkNCxwbQKpx/bkHdrD75yMk= - on: - tags: true - repo: pytest-dev/py - - exclude: - - python: '3.7' - env: DEPS="pytest~=2.9.0" - - allow_failures: - - python: 'pypy' - - python: 'pypy3' - -install: - - pip install -U coverage coverage-enable-subprocess pip setuptools setuptools_scm - - pip install $DEPS - - pip install -U . --force-reinstall - -script: - - coverage run -m pytest --lsof $PYTEST_XADDOPTS - -after_success: - - coverage combine - - coverage report -m - - coverage xml - - bash <(curl -s https://codecov.io/bash) -Z -X gcov -X coveragepy -X search -X xcode -X gcovout -X fix -f coverage.xml -e TRAVIS_PYTHON_VERSION diff --git a/CHANGELOG b/CHANGELOG.rst similarity index 99% rename from CHANGELOG rename to CHANGELOG.rst index c74ee69..90e5905 100644 --- a/CHANGELOG +++ b/CHANGELOG.rst @@ -1,3 +1,10 @@ +1.10.0 (2020-12-12) +=================== + +- Fix a regular expression DoS vulnerability in the py.path.svnwc SVN blame functionality (CVE-2020-29651) +- Update vendored apipkg: 1.4 => 1.5 +- Update vendored iniconfig: 1.0.0 => 1.1.1 + 1.9.0 (2020-06-24) ================== diff --git a/MANIFEST.in b/MANIFEST.in index afa7ad6..6d255b1 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,4 @@ -include CHANGELOG +include CHANGELOG.rst include AUTHORS include README.rst include setup.py diff --git a/PKG-INFO b/PKG-INFO deleted file mode 100644 index d4a40c1..0000000 --- a/PKG-INFO +++ /dev/null @@ -1,67 +0,0 @@ -Metadata-Version: 1.2 -Name: py -Version: 1.9.0 -Summary: library with cross-python path, ini-parsing, io, code, log facilities -Home-page: https://py.readthedocs.io/ -Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others -Author-email: pytest-dev@python.org -License: MIT license -Description: .. image:: https://img.shields.io/pypi/v/py.svg - :target: https://pypi.org/project/py - - .. image:: https://img.shields.io/conda/vn/conda-forge/py.svg - :target: https://anaconda.org/conda-forge/py - - .. image:: https://img.shields.io/pypi/pyversions/pytest.svg - :target: https://pypi.org/project/py - - .. image:: https://img.shields.io/travis/pytest-dev/py.svg - :target: https://travis-ci.org/pytest-dev/py - - .. image:: https://ci.appveyor.com/api/projects/status/10keglan6uqwj5al/branch/master?svg=true - :target: https://ci.appveyor.com/project/pytestbot/py - - - **NOTE**: this library is in **maintenance mode** and should not be used in new code. - - The py lib is a Python development support library featuring - the following tools and modules: - - * ``py.path``: uniform local and svn path objects -> please use pathlib/pathlib2 instead - * ``py.apipkg``: explicit API control and lazy-importing -> please use the standalone package instead - * ``py.iniconfig``: easy parsing of .ini files -> please use the standalone package instead - * ``py.code``: dynamic code generation and introspection (deprecated, moved to ``pytest`` as a implementation detail). - - **NOTE**: prior to the 1.4 release this distribution used to - contain py.test which is now its own package, see http://pytest.org - - For questions and more information please visit http://py.readthedocs.org - - Bugs and issues: https://github.com/pytest-dev/py - - Authors: Holger Krekel and others, 2004-2017 - -Platform: unix -Platform: linux -Platform: osx -Platform: cygwin -Platform: win32 -Classifier: Development Status :: 6 - Mature -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: POSIX -Classifier: Operating System :: Microsoft :: Windows -Classifier: Operating System :: MacOS :: MacOS X -Classifier: Topic :: Software Development :: Testing -Classifier: Topic :: Software Development :: Libraries -Classifier: Topic :: Utilities -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* diff --git a/README.rst b/README.rst index 7eb534f..80800b2 100644 --- a/README.rst +++ b/README.rst @@ -4,14 +4,11 @@ .. image:: https://img.shields.io/conda/vn/conda-forge/py.svg :target: https://anaconda.org/conda-forge/py -.. image:: https://img.shields.io/pypi/pyversions/pytest.svg +.. image:: https://img.shields.io/pypi/pyversions/py.svg :target: https://pypi.org/project/py -.. image:: https://img.shields.io/travis/pytest-dev/py.svg - :target: https://travis-ci.org/pytest-dev/py - -.. image:: https://ci.appveyor.com/api/projects/status/10keglan6uqwj5al/branch/master?svg=true - :target: https://ci.appveyor.com/project/pytestbot/py +.. image:: https://github.com/pytest-dev/py/workflows/build/badge.svg + :target: https://github.com/pytest-dev/py/actions **NOTE**: this library is in **maintenance mode** and should not be used in new code. @@ -25,9 +22,9 @@ the following tools and modules: * ``py.code``: dynamic code generation and introspection (deprecated, moved to ``pytest`` as a implementation detail). **NOTE**: prior to the 1.4 release this distribution used to -contain py.test which is now its own package, see http://pytest.org +contain py.test which is now its own package, see https://docs.pytest.org -For questions and more information please visit http://py.readthedocs.org +For questions and more information please visit https://py.readthedocs.io Bugs and issues: https://github.com/pytest-dev/py diff --git a/HOWTORELEASE.rst b/RELEASING.rst similarity index 90% rename from HOWTORELEASE.rst rename to RELEASING.rst index 8d02316..fb588e3 100644 --- a/HOWTORELEASE.rst +++ b/RELEASING.rst @@ -3,7 +3,7 @@ Release Procedure #. Create a branch ``release-X.Y.Z`` from the latest ``master``. -#. Manually update the ``CHANGELOG`` and commit. +#. Manually update the ``CHANGELOG.rst`` and commit. #. Open a PR for this branch targeting ``master``. diff --git a/doc/changelog.txt b/doc/changelog.txt index 237daca..0c9d092 100644 --- a/doc/changelog.txt +++ b/doc/changelog.txt @@ -1,3 +1,3 @@ .. _`changelog`: -.. include:: ../CHANGELOG +.. include:: ../CHANGELOG.rst diff --git a/py.egg-info/PKG-INFO b/py.egg-info/PKG-INFO deleted file mode 100644 index d4a40c1..0000000 --- a/py.egg-info/PKG-INFO +++ /dev/null @@ -1,67 +0,0 @@ -Metadata-Version: 1.2 -Name: py -Version: 1.9.0 -Summary: library with cross-python path, ini-parsing, io, code, log facilities -Home-page: https://py.readthedocs.io/ -Author: holger krekel, Ronny Pfannschmidt, Benjamin Peterson and others -Author-email: pytest-dev@python.org -License: MIT license -Description: .. image:: https://img.shields.io/pypi/v/py.svg - :target: https://pypi.org/project/py - - .. image:: https://img.shields.io/conda/vn/conda-forge/py.svg - :target: https://anaconda.org/conda-forge/py - - .. image:: https://img.shields.io/pypi/pyversions/pytest.svg - :target: https://pypi.org/project/py - - .. image:: https://img.shields.io/travis/pytest-dev/py.svg - :target: https://travis-ci.org/pytest-dev/py - - .. image:: https://ci.appveyor.com/api/projects/status/10keglan6uqwj5al/branch/master?svg=true - :target: https://ci.appveyor.com/project/pytestbot/py - - - **NOTE**: this library is in **maintenance mode** and should not be used in new code. - - The py lib is a Python development support library featuring - the following tools and modules: - - * ``py.path``: uniform local and svn path objects -> please use pathlib/pathlib2 instead - * ``py.apipkg``: explicit API control and lazy-importing -> please use the standalone package instead - * ``py.iniconfig``: easy parsing of .ini files -> please use the standalone package instead - * ``py.code``: dynamic code generation and introspection (deprecated, moved to ``pytest`` as a implementation detail). - - **NOTE**: prior to the 1.4 release this distribution used to - contain py.test which is now its own package, see http://pytest.org - - For questions and more information please visit http://py.readthedocs.org - - Bugs and issues: https://github.com/pytest-dev/py - - Authors: Holger Krekel and others, 2004-2017 - -Platform: unix -Platform: linux -Platform: osx -Platform: cygwin -Platform: win32 -Classifier: Development Status :: 6 - Mature -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Operating System :: POSIX -Classifier: Operating System :: Microsoft :: Windows -Classifier: Operating System :: MacOS :: MacOS X -Classifier: Topic :: Software Development :: Testing -Classifier: Topic :: Software Development :: Libraries -Classifier: Topic :: Utilities -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* diff --git a/py.egg-info/SOURCES.txt b/py.egg-info/SOURCES.txt deleted file mode 100644 index bedbaea..0000000 --- a/py.egg-info/SOURCES.txt +++ /dev/null @@ -1,149 +0,0 @@ -.appveyor.yml -.flake8 -.gitattributes -.gitignore -.travis.yml -AUTHORS -CHANGELOG -HOWTORELEASE.rst -LICENSE -MANIFEST.in -README.rst -codecov.yml -conftest.py -setup.cfg -setup.py -tox.ini -bench/localpath.py -doc/Makefile -doc/changelog.txt -doc/code.txt -doc/conf.py -doc/download.html -doc/faq.txt -doc/index.txt -doc/install.txt -doc/io.txt -doc/links.inc -doc/log.txt -doc/misc.txt -doc/path.txt -doc/style.css -doc/xml.txt -doc/_templates/layout.html -doc/announce/release-0.9.0.txt -doc/announce/release-0.9.2.txt -doc/announce/release-1.0.0.txt -doc/announce/release-1.0.1.txt -doc/announce/release-1.0.2.txt -doc/announce/release-1.1.0.txt -doc/announce/release-1.1.1.txt -doc/announce/release-1.2.0.txt -doc/announce/release-1.2.1.txt -doc/announce/release-1.3.0.txt -doc/announce/release-1.3.1.txt -doc/announce/release-1.3.2.txt -doc/announce/release-1.3.3.txt -doc/announce/release-1.3.4.txt -doc/announce/release-1.4.0.txt -doc/announce/release-1.4.1.txt -doc/announce/releases.txt -doc/example/genhtml.py -doc/example/genhtmlcss.py -doc/example/genxml.py -doc/img/pylib.png -py/__init__.py -py/__init__.pyi -py/__metainfo.py -py/_builtin.py -py/_error.py -py/_std.py -py/_version.py -py/_xmlgen.py -py/error.pyi -py/iniconfig.pyi -py/io.pyi -py/path.pyi -py/py.typed -py/test.py -py/xml.pyi -py.egg-info/PKG-INFO -py.egg-info/SOURCES.txt -py.egg-info/dependency_links.txt -py.egg-info/not-zip-safe -py.egg-info/top_level.txt -py/_code/__init__.py -py/_code/_assertionnew.py -py/_code/_assertionold.py -py/_code/_py2traceback.py -py/_code/assertion.py -py/_code/code.py -py/_code/source.py -py/_io/__init__.py -py/_io/capture.py -py/_io/saferepr.py -py/_io/terminalwriter.py -py/_log/__init__.py -py/_log/log.py -py/_log/warning.py -py/_path/__init__.py -py/_path/cacheutil.py -py/_path/common.py -py/_path/local.py -py/_path/svnurl.py -py/_path/svnwc.py -py/_process/__init__.py -py/_process/cmdexec.py -py/_process/forkedfunc.py -py/_process/killproc.py -py/_vendored_packages/__init__.py -py/_vendored_packages/apipkg.py -py/_vendored_packages/iniconfig.py -py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst -py/_vendored_packages/apipkg-1.4.dist-info/INSTALLER -py/_vendored_packages/apipkg-1.4.dist-info/METADATA -py/_vendored_packages/apipkg-1.4.dist-info/RECORD -py/_vendored_packages/apipkg-1.4.dist-info/WHEEL -py/_vendored_packages/apipkg-1.4.dist-info/metadata.json -py/_vendored_packages/apipkg-1.4.dist-info/top_level.txt -py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst -py/_vendored_packages/iniconfig-1.0.0.dist-info/INSTALLER -py/_vendored_packages/iniconfig-1.0.0.dist-info/METADATA -py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD -py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL -py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json -py/_vendored_packages/iniconfig-1.0.0.dist-info/top_level.txt -tasks/__init__.py -tasks/vendoring.py -testing/conftest.py -testing/code/test_assertion.py -testing/code/test_code.py -testing/code/test_excinfo.py -testing/code/test_source.py -testing/io_/__init__.py -testing/io_/test_capture.py -testing/io_/test_saferepr.py -testing/io_/test_terminalwriter.py -testing/io_/test_terminalwriter_linewidth.py -testing/log/__init__.py -testing/log/test_log.py -testing/log/test_warning.py -testing/path/common.py -testing/path/conftest.py -testing/path/repotest.dump -testing/path/svntestbase.py -testing/path/test_cacheutil.py -testing/path/test_local.py -testing/path/test_svnauth.py -testing/path/test_svnurl.py -testing/path/test_svnwc.py -testing/process/__init__.py -testing/process/test_cmdexec.py -testing/process/test_forkedfunc.py -testing/process/test_killproc.py -testing/root/__init__.py -testing/root/test_builtin.py -testing/root/test_error.py -testing/root/test_py_imports.py -testing/root/test_std.py -testing/root/test_xmlgen.py \ No newline at end of file diff --git a/py.egg-info/dependency_links.txt b/py.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/py.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/py.egg-info/not-zip-safe b/py.egg-info/not-zip-safe deleted file mode 100644 index 8b13789..0000000 --- a/py.egg-info/not-zip-safe +++ /dev/null @@ -1 +0,0 @@ - diff --git a/py.egg-info/top_level.txt b/py.egg-info/top_level.txt deleted file mode 100644 index edfce78..0000000 --- a/py.egg-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -py diff --git a/py/_path/svnwc.py b/py/_path/svnwc.py index 3138dd8..b5b9d8d 100644 --- a/py/_path/svnwc.py +++ b/py/_path/svnwc.py @@ -396,7 +396,7 @@ class SvnAuth(object): def __str__(self): return "" %(self.username,) -rex_blame = re.compile(r'\s*(\d+)\s*(\S+) (.*)') +rex_blame = re.compile(r'\s*(\d+)\s+(\S+) (.*)') class SvnWCCommandPath(common.PathBase): """ path implementation offering access/modification to svn working copies. diff --git a/py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst b/py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst deleted file mode 100644 index 5482220..0000000 --- a/py/_vendored_packages/apipkg-1.4.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,87 +0,0 @@ -Welcome to apipkg! ------------------------- - -With apipkg you can control the exported namespace of a -python package and greatly reduce the number of imports for your users. -It is a `small pure python module`_ that works on virtually all Python -versions, including CPython2.3 to Python3.1, Jython and PyPy. It co-operates -well with Python's ``help()`` system, custom importers (PEP302) and common -command line completion tools. - -Usage is very simple: you can require 'apipkg' as a dependency or you -can copy paste the <200 Lines of code into your project. - - -Tutorial example -------------------- - -Here is a simple ``mypkg`` package that specifies one namespace -and exports two objects imported from different modules:: - - # mypkg/__init__.py - import apipkg - apipkg.initpkg(__name__, { - 'path': { - 'Class1': "_mypkg.somemodule:Class1", - 'clsattr': "_mypkg.othermodule:Class2.attr", - } - } - -The package is initialized with a dictionary as namespace. - -You need to create a ``_mypkg`` package with a ``somemodule.py`` -and ``othermodule.py`` containing the respective classes. -The ``_mypkg`` is not special - it's a completely -regular python package. - -Namespace dictionaries contain ``name: value`` mappings -where the value may be another namespace dictionary or -a string specifying an import location. On accessing -an namespace attribute an import will be performed:: - - >>> import mypkg - >>> mypkg.path - - >>> mypkg.path.Class1 # '_mypkg.somemodule' gets imported now - - >>> mypkg.path.clsattr # '_mypkg.othermodule' gets imported now - 4 # the value of _mypkg.othermodule.Class2.attr - -The ``mypkg.path`` namespace and its two entries are -loaded when they are accessed. This means: - -* lazy loading - only what is actually needed is ever loaded - -* only the root "mypkg" ever needs to be imported to get - access to the complete functionality. - -* the underlying modules are also accessible, for example:: - - from mypkg.sub import Class1 - - -Including apipkg in your package --------------------------------------- - -If you don't want to add an ``apipkg`` dependency to your package you -can copy the `apipkg.py`_ file somewhere to your own package, -for example ``_mypkg/apipkg.py`` in the above example. You -then import the ``initpkg`` function from that new place and -are good to go. - -.. _`small pure python module`: -.. _`apipkg.py`: http://bitbucket.org/hpk42/apipkg/src/tip/apipkg.py - -Feedback? ------------------------ - -If you have questions you are welcome to - -* join the #pylib channel on irc.freenode.net -* subscribe to the http://codespeak.net/mailman/listinfo/py-dev list. -* create an issue on http://bitbucket.org/hpk42/apipkg/issues - -have fun, -holger krekel - - diff --git a/py/_vendored_packages/apipkg-1.4.dist-info/RECORD b/py/_vendored_packages/apipkg-1.4.dist-info/RECORD deleted file mode 100644 index dc72959..0000000 --- a/py/_vendored_packages/apipkg-1.4.dist-info/RECORD +++ /dev/null @@ -1,9 +0,0 @@ -apipkg.py,sha256=BNnv_qvq8zZvku-uudoqgp3XTNFbwsNUmtzOKrVI7X0,6420 -apipkg-1.4.dist-info/top_level.txt,sha256=3TGS6nmN7kjxhUK4LpPCB3QkQI34QYGrT0ZQGWajoZ8,7 -apipkg-1.4.dist-info/METADATA,sha256=Fk_8BrHyXE--kvB3_ZBKgwvPaKusAZUjchH-kpB63Hs,3491 -apipkg-1.4.dist-info/DESCRIPTION.rst,sha256=RkMQqk5ljhGy0DiZkR_nbpjqvwCIhuIEHsyvkn3O96k,2803 -apipkg-1.4.dist-info/metadata.json,sha256=GdshYrA_7gAII3E3EQMH-31BHzU-klTZ6bPQzlDmuy4,779 -apipkg-1.4.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110 -apipkg-1.4.dist-info/RECORD,, -apipkg-1.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -__pycache__/apipkg.cpython-35.pyc,, diff --git a/py/_vendored_packages/apipkg-1.4.dist-info/metadata.json b/py/_vendored_packages/apipkg-1.4.dist-info/metadata.json deleted file mode 100644 index 05609b9..0000000 --- a/py/_vendored_packages/apipkg-1.4.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"license": "MIT License", "name": "apipkg", "metadata_version": "2.0", "generator": "bdist_wheel (0.24.0)", "summary": "apipkg: namespace control and lazy-import mechanism", "platform": "unix", "version": "1.4", "extensions": {"python.details": {"project_urls": {"Home": "http://bitbucket.org/hpk42/apipkg"}, "document_names": {"description": "DESCRIPTION.rst"}, "contacts": [{"role": "author", "email": "holger at merlinux.eu", "name": "holger krekel"}]}}, "classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Operating System :: Microsoft :: Windows", "Operating System :: MacOS :: MacOS X", "Topic :: Software Development :: Libraries", "Programming Language :: Python"]} \ No newline at end of file diff --git a/py/_vendored_packages/apipkg-1.4.dist-info/INSTALLER b/py/_vendored_packages/apipkg-1.5.dist-info/INSTALLER similarity index 100% rename from py/_vendored_packages/apipkg-1.4.dist-info/INSTALLER rename to py/_vendored_packages/apipkg-1.5.dist-info/INSTALLER diff --git a/py/_vendored_packages/apipkg-1.4.dist-info/METADATA b/py/_vendored_packages/apipkg-1.5.dist-info/METADATA similarity index 69% rename from py/_vendored_packages/apipkg-1.4.dist-info/METADATA rename to py/_vendored_packages/apipkg-1.5.dist-info/METADATA index eb7e60a..ac14b4b 100644 --- a/py/_vendored_packages/apipkg-1.4.dist-info/METADATA +++ b/py/_vendored_packages/apipkg-1.5.dist-info/METADATA @@ -1,10 +1,11 @@ -Metadata-Version: 2.0 +Metadata-Version: 2.1 Name: apipkg -Version: 1.4 +Version: 1.5 Summary: apipkg: namespace control and lazy-import mechanism -Home-page: http://bitbucket.org/hpk42/apipkg +Home-page: https://github.com/pytest-dev/apipkg Author: holger krekel -Author-email: holger at merlinux.eu +Maintainer: Ronny Pfannschmidt +Maintainer-email: opensource@ronnypfannschmidt.de License: MIT License Platform: unix Platform: linux @@ -19,19 +20,25 @@ Classifier: Operating System :: Microsoft :: Windows Classifier: Operating System :: MacOS :: MacOS X Classifier: Topic :: Software Development :: Libraries Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 2 +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 +Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* Welcome to apipkg! ------------------------ -With apipkg you can control the exported namespace of a -python package and greatly reduce the number of imports for your users. -It is a `small pure python module`_ that works on virtually all Python -versions, including CPython2.3 to Python3.1, Jython and PyPy. It co-operates -well with Python's ``help()`` system, custom importers (PEP302) and common -command line completion tools. +With apipkg you can control the exported namespace of a Python package and +greatly reduce the number of imports for your users. +It is a `small pure Python module`_ that works on CPython 2.7 and 3.4+, +Jython and PyPy. It cooperates well with Python's ``help()`` system, +custom importers (PEP302) and common command-line completion tools. Usage is very simple: you can require 'apipkg' as a dependency or you -can copy paste the <200 Lines of code into your project. +can copy paste the ~200 lines of code into your project. Tutorial example @@ -54,7 +61,7 @@ The package is initialized with a dictionary as namespace. You need to create a ``_mypkg`` package with a ``somemodule.py`` and ``othermodule.py`` containing the respective classes. The ``_mypkg`` is not special - it's a completely -regular python package. +regular Python package. Namespace dictionaries contain ``name: value`` mappings where the value may be another namespace dictionary or @@ -75,7 +82,7 @@ loaded when they are accessed. This means: * lazy loading - only what is actually needed is ever loaded * only the root "mypkg" ever needs to be imported to get - access to the complete functionality. + access to the complete functionality * the underlying modules are also accessible, for example:: @@ -91,8 +98,8 @@ for example ``_mypkg/apipkg.py`` in the above example. You then import the ``initpkg`` function from that new place and are good to go. -.. _`small pure python module`: -.. _`apipkg.py`: http://bitbucket.org/hpk42/apipkg/src/tip/apipkg.py +.. _`small pure Python module`: +.. _`apipkg.py`: https://github.com/pytest-dev/apipkg/blob/master/src/apipkg/__init__.py Feedback? ----------------------- @@ -100,8 +107,7 @@ Feedback? If you have questions you are welcome to * join the #pylib channel on irc.freenode.net -* subscribe to the http://codespeak.net/mailman/listinfo/py-dev list. -* create an issue on http://bitbucket.org/hpk42/apipkg/issues +* create an issue on https://github.com/pytest-dev/apipkg/issues have fun, holger krekel diff --git a/py/_vendored_packages/apipkg-1.5.dist-info/RECORD b/py/_vendored_packages/apipkg-1.5.dist-info/RECORD new file mode 100644 index 0000000..8611704 --- /dev/null +++ b/py/_vendored_packages/apipkg-1.5.dist-info/RECORD @@ -0,0 +1,10 @@ +../../../../home/ran/.cache/pycache/tmp/pip-target-oxds71ih/lib/python/apipkg/__init__.cpython-39.pyc,, +../../../../home/ran/.cache/pycache/tmp/pip-target-oxds71ih/lib/python/apipkg/version.cpython-39.pyc,, +apipkg-1.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +apipkg-1.5.dist-info/METADATA,sha256=tIG1DSBzSeqmSRpOKHSEBmT1eOPdK8xK01xAIADuks4,3800 +apipkg-1.5.dist-info/RECORD,, +apipkg-1.5.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +apipkg-1.5.dist-info/WHEEL,sha256=gduuPyBvFJQSQ0zdyxF7k0zynDXbIbvg5ZBHoXum5uk,110 +apipkg-1.5.dist-info/top_level.txt,sha256=3TGS6nmN7kjxhUK4LpPCB3QkQI34QYGrT0ZQGWajoZ8,7 +apipkg/__init__.py,sha256=VogR4mDwYmeOdJnjGi-RoMB1qJnD6_puDYj_nRolzhM,6707 +apipkg/version.py,sha256=YN6DnKyEPqjDAauJuwJRG9vlKbWVLd9gAbH7mkQXXNo,114 diff --git a/py/_vendored_packages/apipkg-1.5.dist-info/REQUESTED b/py/_vendored_packages/apipkg-1.5.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/py/_vendored_packages/apipkg-1.4.dist-info/WHEEL b/py/_vendored_packages/apipkg-1.5.dist-info/WHEEL similarity index 70% rename from py/_vendored_packages/apipkg-1.4.dist-info/WHEEL rename to py/_vendored_packages/apipkg-1.5.dist-info/WHEEL index 9dff69d..1316c41 100644 --- a/py/_vendored_packages/apipkg-1.4.dist-info/WHEEL +++ b/py/_vendored_packages/apipkg-1.5.dist-info/WHEEL @@ -1,5 +1,5 @@ Wheel-Version: 1.0 -Generator: bdist_wheel (0.24.0) +Generator: bdist_wheel (0.31.1) Root-Is-Purelib: true Tag: py2-none-any Tag: py3-none-any diff --git a/py/_vendored_packages/apipkg-1.4.dist-info/top_level.txt b/py/_vendored_packages/apipkg-1.5.dist-info/top_level.txt similarity index 100% rename from py/_vendored_packages/apipkg-1.4.dist-info/top_level.txt rename to py/_vendored_packages/apipkg-1.5.dist-info/top_level.txt diff --git a/py/_vendored_packages/apipkg.py b/py/_vendored_packages/apipkg/__init__.py similarity index 90% rename from py/_vendored_packages/apipkg.py rename to py/_vendored_packages/apipkg/__init__.py index 9d56e0b..9318048 100644 --- a/py/_vendored_packages/apipkg.py +++ b/py/_vendored_packages/apipkg/__init__.py @@ -1,7 +1,7 @@ """ -apipkg: control the exported namespace of a python package. +apipkg: control the exported namespace of a Python package. -see http://pypi.python.org/pypi/apipkg +see https://pypi.python.org/pypi/apipkg (c) holger krekel, 2009 - MIT license """ @@ -9,8 +9,7 @@ import os import sys from types import ModuleType - -__version__ = '1.4' +from .version import version as __version__ def _py_abspath(path): @@ -37,8 +36,9 @@ def distribution_version(name): return dist.version -def initpkg(pkgname, exportdefs, attr=dict(), eager=False): +def initpkg(pkgname, exportdefs, attr=None, eager=False): """ initialize given package from the export definitions. """ + attr = attr or {} oldmod = sys.modules.get(pkgname) d = {} f = getattr(oldmod, '__file__', None) @@ -51,6 +51,8 @@ def initpkg(pkgname, exportdefs, attr=dict(), eager=False): d['__loader__'] = oldmod.__loader__ if hasattr(oldmod, '__path__'): d['__path__'] = [_py_abspath(p) for p in oldmod.__path__] + if hasattr(oldmod, '__package__'): + d['__package__'] = oldmod.__package__ if '__doc__' not in exportdefs and getattr(oldmod, '__doc__', None): d['__doc__'] = oldmod.__doc__ d.update(attr) @@ -60,12 +62,13 @@ def initpkg(pkgname, exportdefs, attr=dict(), eager=False): sys.modules[pkgname] = mod # eagerload in bypthon to avoid their monkeypatching breaking packages if 'bpython' in sys.modules or eager: - for module in sys.modules.values(): + for module in list(sys.modules.values()): if isinstance(module, ApiModule): module.__dict__ def importobj(modpath, attrname): + """imports a module, then resolves the attrname on it""" module = __import__(modpath, None, None, ['__doc__']) if not attrname: return module @@ -78,6 +81,7 @@ def importobj(modpath, attrname): class ApiModule(ModuleType): + """the magical lazy-loading module standing""" def __docget(self): try: return self.__doc @@ -121,13 +125,13 @@ class ApiModule(ModuleType): self.__map__[name] = (modpath, attrname) def __repr__(self): - l = [] + repr_list = [] if hasattr(self, '__version__'): - l.append("version=" + repr(self.__version__)) + repr_list.append("version=" + repr(self.__version__)) if hasattr(self, '__file__'): - l.append('from ' + repr(self.__file__)) - if l: - return '' % (self.__name__, " ".join(l)) + repr_list.append('from ' + repr(self.__file__)) + if repr_list: + return '' % (self.__name__, " ".join(repr_list)) return '' % (self.__name__,) def __makeattr(self, name): diff --git a/py/_version.py b/py/_vendored_packages/apipkg/version.py similarity index 84% rename from py/_version.py rename to py/_vendored_packages/apipkg/version.py index 5738e0b..c25fc7c 100644 --- a/py/_version.py +++ b/py/_vendored_packages/apipkg/version.py @@ -1,4 +1,4 @@ # coding: utf-8 # file generated by setuptools_scm # don't change, don't track in version control -version = '1.9.0' +version = '1.5' diff --git a/py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst b/py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst deleted file mode 100644 index 6d59bc2..0000000 --- a/py/_vendored_packages/iniconfig-1.0.0.dist-info/DESCRIPTION.rst +++ /dev/null @@ -1,53 +0,0 @@ -iniconfig: brain-dead simple parsing of ini files -======================================================= - -iniconfig is a small and simple INI-file parser module -having a unique set of features: - -* tested against Python2.4 across to Python3.2, Jython, PyPy -* maintains order of sections and entries -* supports multi-line values with or without line-continuations -* supports "#" comments everywhere -* raises errors with proper line-numbers -* no bells and whistles like automatic substitutions -* iniconfig raises an Error if two sections have the same name. - -If you encounter issues or have feature wishes please report them to: - - http://github.org/RonnyPfannschmidt/iniconfig/issues - -Basic Example -=================================== - -If you have an ini file like this:: - - # content of example.ini - [section1] # comment - name1=value1 # comment - name1b=value1,value2 # comment - - [section2] - name2= - line1 - line2 - -then you can do:: - - >>> import iniconfig - >>> ini = iniconfig.IniConfig("example.ini") - >>> ini['section1']['name1'] # raises KeyError if not exists - 'value1' - >>> ini.get('section1', 'name1b', [], lambda x: x.split(",")) - ['value1', 'value2'] - >>> ini.get('section1', 'notexist', [], lambda x: x.split(",")) - [] - >>> [x.name for x in list(ini)] - ['section1', 'section2'] - >>> list(list(ini)[0].items()) - [('name1', 'value1'), ('name1b', 'value1,value2')] - >>> 'section1' in ini - True - >>> 'inexistendsection' in ini - False - - diff --git a/py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD b/py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD deleted file mode 100644 index ec2f5e1..0000000 --- a/py/_vendored_packages/iniconfig-1.0.0.dist-info/RECORD +++ /dev/null @@ -1,9 +0,0 @@ -iniconfig.py,sha256=-pBe5AF_6aAwo1CxJQ8i_zJq6ejc6IxHta7qk2tNJhY,5208 -iniconfig-1.0.0.dist-info/DESCRIPTION.rst,sha256=BDLMwWqfjpwZ5yqXRvz1x6bf8Dnt_pZhElekAwtL19o,1522 -iniconfig-1.0.0.dist-info/METADATA,sha256=bb2T8WUSDXXiUVxZ4WXhbffq6stikMTlB1jyrPbLfyU,2405 -iniconfig-1.0.0.dist-info/RECORD,, -iniconfig-1.0.0.dist-info/WHEEL,sha256=3XK1Z4AI42GuJXciCpiHMOkbehxRV8QDBW8IU41k3ZU,96 -iniconfig-1.0.0.dist-info/metadata.json,sha256=UYYwW0p815nU4qz8Iq1gGqIYaAcsCyGju3jXvTOyXSI,950 -iniconfig-1.0.0.dist-info/top_level.txt,sha256=7KfM0fugdlToj9UW7enKXk2HYALQD8qHiyKtjhSzgN8,10 -iniconfig-1.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -__pycache__/iniconfig.cpython-35.pyc,, diff --git a/py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL b/py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL deleted file mode 100644 index 15b96c9..0000000 --- a/py/_vendored_packages/iniconfig-1.0.0.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.30.0.a0) -Root-Is-Purelib: true -Tag: cp35-none-any - diff --git a/py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json b/py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json deleted file mode 100644 index 084daa6..0000000 --- a/py/_vendored_packages/iniconfig-1.0.0.dist-info/metadata.json +++ /dev/null @@ -1 +0,0 @@ -{"classifiers": ["Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Operating System :: Microsoft :: Windows", "Operating System :: MacOS :: MacOS X", "Topic :: Software Development :: Libraries", "Topic :: Utilities", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3"], "extensions": {"python.details": {"contacts": [{"email": "opensource@ronnypfannschmidt.de, holger.krekel@gmail.com", "name": "Ronny Pfannschmidt, Holger Krekel", "role": "author"}], "document_names": {"description": "DESCRIPTION.rst"}, "project_urls": {"Home": "http://github.com/RonnyPfannschmidt/iniconfig"}}}, "generator": "bdist_wheel (0.30.0.a0)", "license": "MIT License", "metadata_version": "2.0", "name": "iniconfig", "platform": "unix", "summary": "iniconfig: brain-dead simple config-ini parsing", "version": "1.0.0"} \ No newline at end of file diff --git a/py/_vendored_packages/iniconfig-1.0.0.dist-info/INSTALLER b/py/_vendored_packages/iniconfig-1.1.1.dist-info/INSTALLER similarity index 100% rename from py/_vendored_packages/iniconfig-1.0.0.dist-info/INSTALLER rename to py/_vendored_packages/iniconfig-1.1.1.dist-info/INSTALLER diff --git a/py/_vendored_packages/iniconfig-1.1.1.dist-info/LICENSE b/py/_vendored_packages/iniconfig-1.1.1.dist-info/LICENSE new file mode 100644 index 0000000..31ecdfb --- /dev/null +++ b/py/_vendored_packages/iniconfig-1.1.1.dist-info/LICENSE @@ -0,0 +1,19 @@ + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + diff --git a/py/_vendored_packages/iniconfig-1.0.0.dist-info/METADATA b/py/_vendored_packages/iniconfig-1.1.1.dist-info/METADATA similarity index 96% rename from py/_vendored_packages/iniconfig-1.0.0.dist-info/METADATA rename to py/_vendored_packages/iniconfig-1.1.1.dist-info/METADATA index 79ea62d..c078a75 100644 --- a/py/_vendored_packages/iniconfig-1.0.0.dist-info/METADATA +++ b/py/_vendored_packages/iniconfig-1.1.1.dist-info/METADATA @@ -1,6 +1,6 @@ -Metadata-Version: 2.0 +Metadata-Version: 2.1 Name: iniconfig -Version: 1.0.0 +Version: 1.1.1 Summary: iniconfig: brain-dead simple config-ini parsing Home-page: http://github.com/RonnyPfannschmidt/iniconfig Author: Ronny Pfannschmidt, Holger Krekel @@ -39,7 +39,7 @@ having a unique set of features: If you encounter issues or have feature wishes please report them to: - http://github.org/RonnyPfannschmidt/iniconfig/issues + http://github.com/RonnyPfannschmidt/iniconfig/issues Basic Example =================================== diff --git a/py/_vendored_packages/iniconfig-1.1.1.dist-info/RECORD b/py/_vendored_packages/iniconfig-1.1.1.dist-info/RECORD new file mode 100644 index 0000000..73a6fe1 --- /dev/null +++ b/py/_vendored_packages/iniconfig-1.1.1.dist-info/RECORD @@ -0,0 +1,11 @@ +../../../../home/ran/.cache/pycache/tmp/pip-target-oxds71ih/lib/python/iniconfig/__init__.cpython-39.pyc,, +iniconfig-1.1.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +iniconfig-1.1.1.dist-info/LICENSE,sha256=KvaAw570k_uCgwNW0dPfGstaBgM8ui3sehniHKp3qGY,1061 +iniconfig-1.1.1.dist-info/METADATA,sha256=_4-oFKpRXuZv5rzepScpXRwhq6DzqsgbnA5ZpgMUMcs,2405 +iniconfig-1.1.1.dist-info/RECORD,, +iniconfig-1.1.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +iniconfig-1.1.1.dist-info/WHEEL,sha256=ADKeyaGyKF5DwBNE0sRE5pvW-bSkFMJfBuhzZ3rceP4,110 +iniconfig-1.1.1.dist-info/top_level.txt,sha256=7KfM0fugdlToj9UW7enKXk2HYALQD8qHiyKtjhSzgN8,10 +iniconfig/__init__.py,sha256=-pBe5AF_6aAwo1CxJQ8i_zJq6ejc6IxHta7qk2tNJhY,5208 +iniconfig/__init__.pyi,sha256=-4KOctzq28ohRmTZsqlH6aylyFqsNKxYqtk1dteypi4,1205 +iniconfig/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/py/_vendored_packages/iniconfig-1.1.1.dist-info/REQUESTED b/py/_vendored_packages/iniconfig-1.1.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/py/_vendored_packages/iniconfig-1.1.1.dist-info/WHEEL b/py/_vendored_packages/iniconfig-1.1.1.dist-info/WHEEL new file mode 100644 index 0000000..6d38aa0 --- /dev/null +++ b/py/_vendored_packages/iniconfig-1.1.1.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.35.1) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/py/_vendored_packages/iniconfig-1.0.0.dist-info/top_level.txt b/py/_vendored_packages/iniconfig-1.1.1.dist-info/top_level.txt similarity index 100% rename from py/_vendored_packages/iniconfig-1.0.0.dist-info/top_level.txt rename to py/_vendored_packages/iniconfig-1.1.1.dist-info/top_level.txt diff --git a/py/_vendored_packages/iniconfig.py b/py/_vendored_packages/iniconfig/__init__.py similarity index 100% rename from py/_vendored_packages/iniconfig.py rename to py/_vendored_packages/iniconfig/__init__.py diff --git a/py/_vendored_packages/iniconfig/__init__.pyi b/py/_vendored_packages/iniconfig/__init__.pyi new file mode 100644 index 0000000..b6284be --- /dev/null +++ b/py/_vendored_packages/iniconfig/__init__.pyi @@ -0,0 +1,31 @@ +from typing import Callable, Iterator, Mapping, Optional, Tuple, TypeVar, Union +from typing_extensions import Final + +_D = TypeVar('_D') +_T = TypeVar('_T') + +class ParseError(Exception): + # Private __init__. + path: Final[str] + lineno: Final[int] + msg: Final[str] + +class SectionWrapper: + # Private __init__. + config: Final[IniConfig] + name: Final[str] + def __getitem__(self, key: str) -> str: ... + def __iter__(self) -> Iterator[str]: ... + def get(self, key: str, default: _D = ..., convert: Callable[[str], _T] = ...) -> Union[_T, _D]: ... + def items(self) -> Iterator[Tuple[str, str]]: ... + def lineof(self, name: str) -> Optional[int]: ... + +class IniConfig: + path: Final[str] + sections: Final[Mapping[str, Mapping[str, str]]] + def __init__(self, path: str, data: Optional[str] = None): ... + def __contains__(self, arg: str) -> bool: ... + def __getitem__(self, name: str) -> SectionWrapper: ... + def __iter__(self) -> Iterator[SectionWrapper]: ... + def get(self, section: str, name: str, default: _D = ..., convert: Callable[[str], _T] = ...) -> Union[_T, _D]: ... + def lineof(self, section: str, name: Optional[str] = ...) -> Optional[int]: ... diff --git a/py/_vendored_packages/iniconfig/py.typed b/py/_vendored_packages/iniconfig/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/py/iniconfig.pyi b/py/iniconfig.pyi index 79b5e6a..b6284be 100644 --- a/py/iniconfig.pyi +++ b/py/iniconfig.pyi @@ -5,27 +5,27 @@ _D = TypeVar('_D') _T = TypeVar('_T') class ParseError(Exception): + # Private __init__. path: Final[str] lineno: Final[int] msg: Final[str] - def __init__(self, path: str, lineno: int, msg: str) -> None: ... -class _SectionWrapper: +class SectionWrapper: + # Private __init__. config: Final[IniConfig] name: Final[str] - def __init__(self, config: IniConfig, name: str) -> None: ... - def __getitem__(self, key: str) -> Optional[str]: ... + def __getitem__(self, key: str) -> str: ... def __iter__(self) -> Iterator[str]: ... - def get(self, key: str, default: _D = ..., convert: Callable[[Optional[str]], _T] = ...) -> Union[_T, _D]: ... - def items(self) -> Iterator[Tuple[str, Optional[str]]]: ... + def get(self, key: str, default: _D = ..., convert: Callable[[str], _T] = ...) -> Union[_T, _D]: ... + def items(self) -> Iterator[Tuple[str, str]]: ... def lineof(self, name: str) -> Optional[int]: ... class IniConfig: path: Final[str] - sections: Final[Mapping[str, Mapping[str, Optional[str]]]] + sections: Final[Mapping[str, Mapping[str, str]]] def __init__(self, path: str, data: Optional[str] = None): ... def __contains__(self, arg: str) -> bool: ... - def __getitem__(self, name: str) -> _SectionWrapper: ... - def __iter__(self) -> Iterator[_SectionWrapper]: ... - def get(self, section: str, name: str, default: _D = ..., convert: Callable[[Optional[str]], _T] = ...) -> Union[_T, _D]: ... + def __getitem__(self, name: str) -> SectionWrapper: ... + def __iter__(self) -> Iterator[SectionWrapper]: ... + def get(self, section: str, name: str, default: _D = ..., convert: Callable[[str], _T] = ...) -> Union[_T, _D]: ... def lineof(self, section: str, name: Optional[str] = ...) -> Optional[int]: ... diff --git a/setup.cfg b/setup.cfg index 602dcca..5f25c2f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -5,9 +5,4 @@ universal = 1 license_file = LICENSE [devpi:upload] -formats = sdist.tgz,bdist_wheel - -[egg_info] -tag_build = -tag_date = 0 - +formats=sdist.tgz,bdist_wheel diff --git a/tasks/__init__.py b/tasks/__init__.py index 5d74b64..e69de29 100644 --- a/tasks/__init__.py +++ b/tasks/__init__.py @@ -1,12 +0,0 @@ -""" -Invoke tasks to help with pytest development and release process. -""" - -import invoke - -from . import vendoring - - -ns = invoke.Collection( - vendoring -) diff --git a/tasks/vendoring.py b/tasks/vendoring.py index fbc171b..3c7d601 100644 --- a/tasks/vendoring.py +++ b/tasks/vendoring.py @@ -1,23 +1,41 @@ from __future__ import absolute_import, print_function -import py -import invoke +import os.path +import shutil +import subprocess +import sys -VENDOR_TARGET = py.path.local("py/_vendored_packages") -GOOD_FILES = 'README.md', '__init__.py' +VENDOR_TARGET = "py/_vendored_packages" +GOOD_FILES = ('README.md', '__init__.py') -@invoke.task() -def remove_libs(ctx): + +def remove_libs(): print("removing vendored libs") - for path in VENDOR_TARGET.listdir(): - if path.basename not in GOOD_FILES: + for filename in os.listdir(VENDOR_TARGET): + if filename not in GOOD_FILES: + path = os.path.join(VENDOR_TARGET, filename) print(" ", path) - path.remove() + if os.path.isfile(path): + os.remove(path) + else: + shutil.rmtree(path) + -@invoke.task(pre=[remove_libs]) -def update_libs(ctx): +def update_libs(): print("installing libs") - ctx.run("pip install -t {target} apipkg iniconfig".format(target=VENDOR_TARGET)) - ctx.run("git add {target}".format(target=VENDOR_TARGET)) + subprocess.check_call(( + sys.executable, '-m', 'pip', 'install', + '--target', VENDOR_TARGET, 'apipkg', 'iniconfig', + )) + subprocess.check_call(('git', 'add', VENDOR_TARGET)) print("Please commit to finish the update after running the tests:") print() print(' git commit -am "Updated vendored libs"') + + +def main(): + remove_libs() + update_libs() + + +if __name__ == '__main__': + exit(main()) diff --git a/testing/code/test_source.py b/testing/code/test_source.py index 3492761..ca9a422 100644 --- a/testing/code/test_source.py +++ b/testing/code/test_source.py @@ -103,7 +103,7 @@ def test_source_strip_multiline(): def test_syntaxerror_rerepresentation(): ex = py.test.raises(SyntaxError, py.code.compile, 'xyz xyz') assert ex.value.lineno == 1 - assert ex.value.offset in (4,7) # XXX pypy/jython versus cpython? + assert ex.value.offset in (5, 7) # pypy/cpython difference assert ex.value.text.strip(), 'x x' def test_isparseable(): @@ -456,7 +456,9 @@ def test_getfslineno(): class B: pass B.__name__ = "B2" - assert getfslineno(B)[1] == -1 + # TODO: On CPython 3.9 this actually returns the line, + # should it? + # assert getfslineno(B)[1] == -1 def test_code_of_object_instance_with_call(): class A: @@ -510,11 +512,17 @@ def test_comments(): comment 4 """ ''' - for line in range(2,6): - assert str(getstatement(line, source)) == ' x = 1' - for line in range(6,10): - assert str(getstatement(line, source)) == ' assert False' - assert str(getstatement(10, source)) == '"""' + for line in range(2, 6): + assert str(getstatement(line, source)) == " x = 1" + if sys.version_info >= (3, 8) or hasattr(sys, "pypy_version_info"): + tqs_start = 8 + else: + tqs_start = 10 + assert str(getstatement(10, source)) == '"""' + for line in range(6, tqs_start): + assert str(getstatement(line, source)) == " assert False" + for line in range(tqs_start, 10): + assert str(getstatement(line, source)) == '"""\ncomment 4\n"""' def test_comment_in_statement(): source = '''test(foo=1, diff --git a/testing/path/test_local.py b/testing/path/test_local.py index a6b8f47..1b9a792 100644 --- a/testing/path/test_local.py +++ b/testing/path/test_local.py @@ -721,8 +721,9 @@ def test_samefile_symlink(tmpdir): p2 = tmpdir.join("linked.txt") try: os.symlink(str(p1), str(p2)) - except OSError as e: + except (OSError, NotImplementedError) as e: # on Windows this might fail if the user doesn't have special symlink permissions + # pypy3 on Windows doesn't implement os.symlink and raises NotImplementedError pytest.skip(str(e.args[0])) assert p1.samefile(p2) -- 2.34.1