From 039e6f7bfe16fb2c149a9c60436e033a57074247 Mon Sep 17 00:00:00 2001 From: Max Rees Date: Wed, 18 Apr 2018 17:50:20 -0400 Subject: user/py3-olefile: upgrade to 0.45.1 Mostly small changes, but important to note is that the legacy OleFileIO_PL module has been dropped. Commits: https://github.com/decalage2/olefile/compare/v0.44...v0.45.1 --- user/py3-olefile/APKBUILD | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/user/py3-olefile/APKBUILD b/user/py3-olefile/APKBUILD index 4709626ae..06bbd6951 100644 --- a/user/py3-olefile/APKBUILD +++ b/user/py3-olefile/APKBUILD @@ -2,20 +2,17 @@ # Maintainer: Max Rees pkgname=py3-olefile _pkgname=olefile -pkgver=0.44 +pkgver=0.45.1 pkgrel=0 pkgdesc="A Python module to read/write MS OLE2 files" -url="https://pypi.python.org/pypi/olefile" +url="https://pypi.python.org/project/olefile" arch="noarch" -license="Custom" +license="BSD-2-Clause Custom" depends="python3" -makedepends="py3-setuptools python3-dev" +makedepends="py3-setuptools python3-dev unzip" install="" giturl="https://github.com/decalage2/olefile" -verbase="$pkgver" -reporev="v$pkgver" -# The downloads from GitHub are missing the test files -source="https://dev.sick.bike/$pkgname-$pkgver.tar.gz" +source="$pkgname-$pkgver.zip::https://files.pythonhosted.org/packages/source/o/$_pkgname/$_pkgname-$pkgver.zip" builddir="$srcdir/$_pkgname-$pkgver" build() { @@ -31,6 +28,7 @@ check() { package() { cd "$builddir" python3 setup.py install --prefix=/usr --root="$pkgdir" + install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE.txt" } -sha512sums="bece8b040cb3572c1fa2536a21c1de4c05e560b641e1c6e4bf66772135c43d29e06c7fc47d6c07d3c351b1f741f49c63201657634c33e9124de892e9a0cc053f py3-olefile-0.44.tar.gz" +sha512sums="31f7584553304b186aad88f1988dfa12ceb34a50d546a38181280a816cfcda8dc54ff502afb31a928d647e6106c9e4878bfac8cec31d24018fdbab65c7007e49 py3-olefile-0.45.1.zip" -- cgit v1.2.3-70-g09d2 From a7129f8bfb75d78ccd82be2aab1891d661fd7ccd Mon Sep 17 00:00:00 2001 From: Max Rees Date: Wed, 18 Apr 2018 18:03:11 -0400 Subject: user/py3-pillow: upgrade to 5.1.0 Changelog: https://github.com/python-pillow/Pillow/blob/5.1.0/CHANGES.rst#510-2018-04-02 Commits: https://github.com/python-pillow/Pillow/compare/5.0.0...5.1.0 --- user/py3-pillow/APKBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/user/py3-pillow/APKBUILD b/user/py3-pillow/APKBUILD index c995de7f5..6f443bf5f 100644 --- a/user/py3-pillow/APKBUILD +++ b/user/py3-pillow/APKBUILD @@ -2,10 +2,10 @@ # Maintainer: Max Rees pkgname=py3-pillow _pkgname=Pillow -pkgver=5.0.0 +pkgver=5.1.0 pkgrel=0 pkgdesc="A Python Imaging Library" -url="https://pypi.python.org/pypi/Pillow/$pkgver" +url="https://pypi.python.org/project/Pillow" arch="all" license="Custom" depends="py3-olefile python3" @@ -50,5 +50,5 @@ doc() { install -Dm644 LICENSE "$subpkgdir/usr/share/licenses/$pkgname/LICENSE" } -sha512sums="f6f1e138effe44a89897f48032a36406dab3c4ddff2a97b7d01e99c05865abad5cffa3ab0eefcacb243e422778063b49243b1a538012fe9c39a1e4329c0978f3 py3-pillow-5.0.0.tar.gz +sha512sums="1e1d5f12054e2f3befa8dafef2551eb75dfefc06944a528638a1686ebc480b52edfc3eaa9964d687816caf003314ad1fc4891d7379cd92e41fbf4b3cbddd1cb9 py3-pillow-5.1.0.tar.gz 1a2e6dc45127b3f0b706d5be4fdc8ddeb09a9e046a182eb48239572e1bdc62d1b1f1a1f11ef1f1f23766aaac1b498556cc9a9cf11d3b943c9f2834c9b41612e0 py3-pillow-scripts-f578e2c.tar.gz" -- cgit v1.2.3-70-g09d2 From 20844255d47fc5d616ee8e2389079bf3f13a701e Mon Sep 17 00:00:00 2001 From: Max Rees Date: Wed, 18 Apr 2018 18:38:44 -0400 Subject: user/py3-setuptools: upgrade to 39.0.1 Changelog: https://github.com/pypa/setuptools/blob/v39.0.1/CHANGES.rst Commits: https://github.com/pypa/setuptools/compare/v38.4.0...v39.0.1 --- user/py3-setuptools/APKBUILD | 12 +- user/py3-setuptools/update-wheel-tests.patch | 460 +++++++++++++++++++++++++++ 2 files changed, 467 insertions(+), 5 deletions(-) create mode 100644 user/py3-setuptools/update-wheel-tests.patch diff --git a/user/py3-setuptools/APKBUILD b/user/py3-setuptools/APKBUILD index ba5e1aebf..ed0269de7 100644 --- a/user/py3-setuptools/APKBUILD +++ b/user/py3-setuptools/APKBUILD @@ -2,10 +2,10 @@ # Maintainer: Max Rees pkgname=py3-setuptools _pkgname=setuptools -pkgver=38.4.0 +pkgver=39.0.1 pkgrel=1 pkgdesc="A collection of enhancements to the Python distutils" -url="http://pypi.python.org/pypi/setuptools" +url="http://pypi.python.org/project/setuptools" arch="noarch" license="MIT" depends="python3" @@ -15,7 +15,8 @@ options="!check" # Circular dependency with py3-tox. Passes on x86_64 subpackages="py3-easy_install:easy_install" # Note: PyPI download is missing tests/requirements.txt source="$pkgname-$pkgver.tar.gz::https://github.com/pypa/$_pkgname/archive/v$pkgver.tar.gz - pythonpath.patch" + pythonpath.patch + update-wheel-tests.patch" builddir="$srcdir/$_pkgname-$pkgver" build() { @@ -41,5 +42,6 @@ easy_install() { mv "$pkgdir"/usr/bin/easy_install* "$subpkgdir/usr/bin" } -sha512sums="81903ee7ecb19715bbafe7b4e6878d3af5f801a9ff3334e82a599a81a8e6430443c4b765180c53c3c9cdcea338b3fff0bdf26245bc9d2da7d5d41b745de73a24 py3-setuptools-38.4.0.tar.gz -0c80433534dbb715829f48713690a72a68f6cb7e337215c9aa507df0fbb2a2a242f54d42fab848c6f03729f155dfe0ccb819a6f5d5230e2195e94e20094eec0b pythonpath.patch" +sha512sums="34df8f10e89825975c82059c759690a2cc1486fc84c71a76875b92c2452529fbdd628e11e3043e479ea3f031af18b37a37b86d2a8d2505c300188eccdc109332 py3-setuptools-39.0.1.tar.gz +0c80433534dbb715829f48713690a72a68f6cb7e337215c9aa507df0fbb2a2a242f54d42fab848c6f03729f155dfe0ccb819a6f5d5230e2195e94e20094eec0b pythonpath.patch +5262d1dcdbf8ab40eb4e9fde3e8496e6b4e9809d6056e6069fc11ef5390e064dfef9f7eccec3452e7566b88ab861bf544b57dce249c4291142f307bd6465e45a update-wheel-tests.patch" diff --git a/user/py3-setuptools/update-wheel-tests.patch b/user/py3-setuptools/update-wheel-tests.patch new file mode 100644 index 000000000..769ef470f --- /dev/null +++ b/user/py3-setuptools/update-wheel-tests.patch @@ -0,0 +1,460 @@ +From 41882016dbd6b334e6e10e2c3ac5afb9f5793ede Mon Sep 17 00:00:00 2001 +From: Paul Ganssle +Date: Fri, 6 Apr 2018 17:07:44 -0400 +Subject: [PATCH 1/2] Update wheel tests to reflect latest version + +--- + setuptools/tests/test_wheel.py | 16 ---------------- + 1 file changed, 16 deletions(-) + +diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py +index b6be6f1f0..d8d5ddb23 100644 +--- a/setuptools/tests/test_wheel.py ++++ b/setuptools/tests/test_wheel.py +@@ -161,11 +161,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + |-- foo/ + | |-- __init__.py +@@ -196,11 +194,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + |-- data_dir/ + | |-- data.txt +@@ -267,11 +263,9 @@ def __repr__(self): + foo-1.0-py{py_version}-{platform}.egg/ + |-- extension{shlib_ext} + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + ''' + ), +@@ -293,11 +287,9 @@ def __repr__(self): + foo-1.0-py{py_version}.egg/ + |-- header.h + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + ''' + ), +@@ -326,11 +318,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + | |-- scripts/ + | | |-- script.py +@@ -346,11 +336,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- requires.txt + | |-- top_level.txt + '''), +@@ -430,11 +418,9 @@ def __repr__(self): + foo-1.0-py{py_version}.egg/ + |-- foo-1.0-py{py_version}-nspkg.pth + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- namespace_packages.txt + | |-- top_level.txt + |-- foo/ +@@ -466,11 +452,9 @@ def __repr__(self): + ''' + foo-1.0-py{py_version}.egg/ + |-- EGG-INFO/ +- | |-- DESCRIPTION.rst + | |-- PKG-INFO + | |-- RECORD + | |-- WHEEL +- | |-- metadata.json + | |-- top_level.txt + |-- foo/ + | |-- __init__.py + +From ed3762fc7d16174a54b2fa83af1996decafd756f Mon Sep 17 00:00:00 2001 +From: Paul Ganssle +Date: Sat, 7 Apr 2018 13:38:31 -0400 +Subject: [PATCH 2/2] Switch test_wheel over to subset-based test + +This is both compatible with the old version of wheel (last one +supported under Python 3.3) and is more in line with our commitment, +which is that the wheel install provides at least these files. +--- + setuptools/tests/test_wheel.py | 268 ++++++++++++++++++++++------------------- + 1 file changed, 142 insertions(+), 126 deletions(-) + +diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py +index d8d5ddb23..150ac4c1b 100644 +--- a/setuptools/tests/test_wheel.py ++++ b/setuptools/tests/test_wheel.py +@@ -92,39 +92,49 @@ def build_wheel(extra_file_defs=None, **kwargs): + yield glob.glob(os.path.join(source_dir, 'dist', '*.whl'))[0] + + +-def tree(root): +- def depth(path): +- return len(path.split(os.path.sep)) +- def prefix(path_depth): +- if not path_depth: +- return '' +- return '| ' * (path_depth - 1) + '|-- ' +- lines = [] +- root_depth = depth(root) ++def tree_set(root): ++ contents = set() + for dirpath, dirnames, filenames in os.walk(root): +- dirnames.sort() +- filenames.sort() +- dir_depth = depth(dirpath) - root_depth +- if dir_depth > 0: +- lines.append('%s%s/' % (prefix(dir_depth - 1), +- os.path.basename(dirpath))) +- for f in filenames: +- lines.append('%s%s' % (prefix(dir_depth), f)) +- return '\n'.join(lines) + '\n' +- +- +-def _check_wheel_install(filename, install_dir, install_tree, ++ for filename in filenames: ++ contents.add(os.path.join(os.path.relpath(dirpath, root), ++ filename)) ++ return contents ++ ++ ++def flatten_tree(tree): ++ """Flatten nested dicts and lists into a full list of paths""" ++ output = set() ++ for node, contents in tree.items(): ++ if isinstance(contents, dict): ++ contents = flatten_tree(contents) ++ ++ for elem in contents: ++ if isinstance(elem, dict): ++ output |= {os.path.join(node, val) ++ for val in flatten_tree(elem)} ++ else: ++ output.add(os.path.join(node, elem)) ++ return output ++ ++ ++def format_install_tree(tree): ++ return {x.format( ++ py_version=PY_MAJOR, ++ platform=get_platform(), ++ shlib_ext=get_config_var('EXT_SUFFIX') or get_config_var('SO')) ++ for x in tree} ++ ++ ++def _check_wheel_install(filename, install_dir, install_tree_includes, + project_name, version, requires_txt): + w = Wheel(filename) + egg_path = os.path.join(install_dir, w.egg_name()) + w.install_as_egg(egg_path) +- if install_tree is not None: +- install_tree = install_tree.format( +- py_version=PY_MAJOR, +- platform=get_platform(), +- shlib_ext=get_config_var('EXT_SUFFIX') or get_config_var('SO') +- ) +- assert install_tree == tree(install_dir) ++ if install_tree_includes is not None: ++ install_tree = format_install_tree(install_tree_includes) ++ exp = tree_set(install_dir) ++ assert install_tree.issubset(exp), (install_tree - exp) ++ + metadata = PathMetadata(egg_path, os.path.join(egg_path, 'EGG-INFO')) + dist = Distribution.from_filename(egg_path, metadata=metadata) + assert dist.project_name == project_name +@@ -157,18 +167,17 @@ def __repr__(self): + setup_kwargs=dict( + packages=['foo'], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- |-- foo/ +- | |-- __init__.py +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt' ++ ], ++ 'foo': ['__init__.py'] ++ } ++ }), + ), + + dict( +@@ -190,18 +199,19 @@ def __repr__(self): + setup_kwargs=dict( + data_files=[('data_dir', ['data.txt'])], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- |-- data_dir/ +- | |-- data.txt +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt' ++ ], ++ 'data_dir': [ ++ 'data.txt' ++ ] ++ } ++ }), + ), + + dict( +@@ -258,17 +268,17 @@ def __repr__(self): + sources=['extension.c']) + ], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}-{platform}.egg/ +- |-- extension{shlib_ext} +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}-{platform}.egg': [ ++ 'extension{shlib_ext}', ++ {'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt', ++ ]}, ++ ] ++ }), + ), + + dict( +@@ -282,17 +292,17 @@ def __repr__(self): + setup_kwargs=dict( + headers=['header.h'], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- header.h +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': [ ++ 'header.h', ++ {'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt', ++ ]}, ++ ] ++ }), + ), + + dict( +@@ -314,34 +324,37 @@ def __repr__(self): + setup_kwargs=dict( + scripts=['script.py', 'script.sh'], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- | |-- scripts/ +- | | |-- script.py +- | | |-- script.sh +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt', ++ {'scripts': [ ++ 'script.py', ++ 'script.sh' ++ ]} ++ ++ ] ++ } ++ }) + ), + + dict( + id='requires1', + install_requires='foobar==2.0', +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- requires.txt +- | |-- top_level.txt +- '''), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'requires.txt', ++ 'top_level.txt', ++ ] ++ } ++ }), + requires_txt=DALS( + ''' + foobar==2.0 +@@ -413,21 +426,22 @@ def __repr__(self): + namespace_packages=['foo'], + packages=['foo.bar'], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- foo-1.0-py{py_version}-nspkg.pth +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- namespace_packages.txt +- | |-- top_level.txt +- |-- foo/ +- | |-- __init__.py +- | |-- bar/ +- | | |-- __init__.py +- '''), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': [ ++ 'foo-1.0-py{py_version}-nspkg.pth', ++ {'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'namespace_packages.txt', ++ 'top_level.txt', ++ ]}, ++ {'foo': [ ++ '__init__.py', ++ {'bar': ['__init__.py']}, ++ ]}, ++ ] ++ }), + ), + + dict( +@@ -448,20 +462,22 @@ def __repr__(self): + packages=['foo'], + data_files=[('foo/data_dir', ['foo/data_dir/data.txt'])], + ), +- install_tree=DALS( +- ''' +- foo-1.0-py{py_version}.egg/ +- |-- EGG-INFO/ +- | |-- PKG-INFO +- | |-- RECORD +- | |-- WHEEL +- | |-- top_level.txt +- |-- foo/ +- | |-- __init__.py +- | |-- data_dir/ +- | | |-- data.txt +- ''' +- ), ++ install_tree=flatten_tree({ ++ 'foo-1.0-py{py_version}.egg': { ++ 'EGG-INFO': [ ++ 'PKG-INFO', ++ 'RECORD', ++ 'WHEEL', ++ 'top_level.txt', ++ ], ++ 'foo': [ ++ '__init__.py', ++ {'data_dir': [ ++ 'data.txt', ++ ]} ++ ] ++ } ++ }), + ), + + ) -- cgit v1.2.3-70-g09d2 From 1c1a331a952653b3881ca4e8596129e5a53bac03 Mon Sep 17 00:00:00 2001 From: Max Rees Date: Wed, 18 Apr 2018 22:48:01 -0400 Subject: user/py3-py: upgrade to 1.5.3 Commits: https://github.com/pytest-dev/py/compare/1.4.34...1.5.3 --- user/py3-py/APKBUILD | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/user/py3-py/APKBUILD b/user/py3-py/APKBUILD index 171ac8245..ad05e041e 100644 --- a/user/py3-py/APKBUILD +++ b/user/py3-py/APKBUILD @@ -2,10 +2,10 @@ # Maintainer: Max Rees pkgname=py3-py _pkgname=py -pkgver=1.4.34 +pkgver=1.5.3 pkgrel=0 pkgdesc="A python library with cross-python path, ini-parsing, io, code, log facilities" -url="https://pypi.python.org/py/$pkgver" +url="https://pypi.python.org/project/py" arch="noarch" license="MIT" depends="python3" @@ -21,10 +21,10 @@ build() { } check() { - # This test suite seems to be incurring the wrath of - # https://bugs.python.org/issue28627 on 1.5.2 + # Can't use py3-pytest > 3.0 as of py3-py==1.5.3-r0 because some tests + # haven't been updated yet cd "$builddir" - tox -e py36 + tox -e py36-pytest30 } package() { @@ -32,4 +32,4 @@ package() { python3 setup.py install --prefix=/usr --root="$pkgdir" } -sha512sums="2e19c82c8315274bffe0ba2c7e20ae3af95f942c40c16121ec953af186f8ff33e8f427c070e137bb04b7cc6dcc6779e35df3911c08595fd3294b5ec9897706e1 py3-py-1.4.34.tar.gz" +sha512sums="243c0da94c439163257c525ef00b30fd6d8add5897121ee0b1f19476b50f18823ce2b99a5ab27a9cf47598b538758d0534060123dce0820d2a65d98046548c96 py3-py-1.5.3.tar.gz" -- cgit v1.2.3-70-g09d2 From 4aa180ef86487cc57fe56e7764d2e5e9ea74a4cc Mon Sep 17 00:00:00 2001 From: Max Rees Date: Mon, 21 May 2018 04:09:37 -0400 Subject: user/py3-pytest: bump to 3.5.1 Commits: https://github.com/pytest-dev/pytest/compare/3.2.2...3.5.1 Changelog: https://github.com/pytest-dev/pytest/blob/3.5.1/CHANGELOG.rst#pytest-351-2018-04-23 --- user/py3-pytest/APKBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/user/py3-pytest/APKBUILD b/user/py3-pytest/APKBUILD index 39b723529..b180e039d 100644 --- a/user/py3-pytest/APKBUILD +++ b/user/py3-pytest/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Max Rees pkgname=py3-pytest _pkgname=pytest -pkgver=3.2.2 +pkgver=3.5.1 pkgrel=0 pkgdesc="A python test library" url="https://pypi.python.org/pypi/pytest" @@ -11,7 +11,7 @@ license="MIT" depends="python3 py3-py" makedepends="py3-setuptools python3-dev" #checkdepends="py3-tox" -options="!check" # Circular dependency with py3-tox. Passes on x86_64 +options="net !check" # Circular dependency with py3-tox. Passes on x86_64 source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz" builddir="$srcdir/$_pkgname-$pkgver" @@ -30,4 +30,4 @@ package() { python3 setup.py install --prefix=/usr --root="$pkgdir" } -sha512sums="6df3a50e7d1efeaf7a283920b16d1daf800798f422bc851b0aacd2bbd5cb0a88c95f9057fae49943b9dfe6527ed552cdf8d983b944ab91d0af252ee4f6eb82db py3-pytest-3.2.2.tar.gz" +sha512sums="5f54251b197b4bebadb06536054b4f79e16c5cec2cdfd7d95fd74548b8ecfaddaafeb635eb90d085fe4d4bea1108f951fe500d0e548cc8b797b0d23e0c2693a0 py3-pytest-3.5.1.tar.gz" -- cgit v1.2.3-70-g09d2 From f2cdafca7de3fe5cd6bed4da6e8d8d594c8dc93e Mon Sep 17 00:00:00 2001 From: Max Rees Date: Mon, 21 May 2018 04:43:54 -0400 Subject: user/py3-tox: bump to 3.0.0 Commits: https://github.com/tox-dev/tox/compare/2.9.1...3.0.0 Changelog: https://tox.readthedocs.io/en/latest/changelog.html#id4 --- user/py3-tox/APKBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/user/py3-tox/APKBUILD b/user/py3-tox/APKBUILD index 9ae7e731a..68f2c2364 100644 --- a/user/py3-tox/APKBUILD +++ b/user/py3-tox/APKBUILD @@ -2,7 +2,7 @@ # Maintainer: Max Rees pkgname=py3-tox _pkgname=tox -pkgver=2.9.1 +pkgver=3.0.0 pkgrel=0 pkgdesc="virtualenv management and test command line tool" url="https://pypi.python.org/pypi/tox" @@ -30,4 +30,4 @@ package() { python3 setup.py install --prefix=/usr --root="$pkgdir" } -sha512sums="ff19b2bb7ac963379f1cccd4973ad9eb4dabfbda976cde7caba50ad010d8fa57c1cba91d63e3e0512e44cc7d350bc9270fbd9b30db1bd55f7d9c239e7623d066 py3-tox-2.9.1.tar.gz" +sha512sums="3bce42561a032b9d1bcc6086093ab79e2ba84ca55b4a6b646485ed3ec4a5b7349d8fc4e47758d2dd7998fc943824a99a251447e13b9ccc396b9d2d87f367f6cd py3-tox-3.0.0.tar.gz" -- cgit v1.2.3-70-g09d2 From 30c3def0481fc6aaf0c10cae8038b43c50bd8b0c Mon Sep 17 00:00:00 2001 From: Max Rees Date: Tue, 22 May 2018 00:48:43 -0400 Subject: user/py3-setuptools: bump to 39.1.0 Commits: https://github.com/pypa/setuptools/compare/v39.0.1...v39.1.0 Changelog: https://github.com/pypa/setuptools/blob/v39.1.0/CHANGES.rst#v3910 --- user/py3-setuptools/APKBUILD | 19 +- user/py3-setuptools/pythonpath.patch | 19 +- user/py3-setuptools/update-wheel-tests.patch | 460 --------------------------- 3 files changed, 18 insertions(+), 480 deletions(-) delete mode 100644 user/py3-setuptools/update-wheel-tests.patch diff --git a/user/py3-setuptools/APKBUILD b/user/py3-setuptools/APKBUILD index ed0269de7..6bee60420 100644 --- a/user/py3-setuptools/APKBUILD +++ b/user/py3-setuptools/APKBUILD @@ -2,21 +2,19 @@ # Maintainer: Max Rees pkgname=py3-setuptools _pkgname=setuptools -pkgver=39.0.1 -pkgrel=1 +pkgver=39.1.0 +pkgrel=0 pkgdesc="A collection of enhancements to the Python distutils" url="http://pypi.python.org/project/setuptools" arch="noarch" license="MIT" depends="python3" makedepends="python3-dev" -#checkdepends="py3-tox" -options="!check" # Circular dependency with py3-tox. Passes on x86_64 +checkdepends="py3-tox" +options="net" # Circular dependency with py3-tox. Passes on x86_64 subpackages="py3-easy_install:easy_install" -# Note: PyPI download is missing tests/requirements.txt -source="$pkgname-$pkgver.tar.gz::https://github.com/pypa/$_pkgname/archive/v$pkgver.tar.gz - pythonpath.patch - update-wheel-tests.patch" +source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz + pythonpath.patch" builddir="$srcdir/$_pkgname-$pkgver" build() { @@ -42,6 +40,5 @@ easy_install() { mv "$pkgdir"/usr/bin/easy_install* "$subpkgdir/usr/bin" } -sha512sums="34df8f10e89825975c82059c759690a2cc1486fc84c71a76875b92c2452529fbdd628e11e3043e479ea3f031af18b37a37b86d2a8d2505c300188eccdc109332 py3-setuptools-39.0.1.tar.gz -0c80433534dbb715829f48713690a72a68f6cb7e337215c9aa507df0fbb2a2a242f54d42fab848c6f03729f155dfe0ccb819a6f5d5230e2195e94e20094eec0b pythonpath.patch -5262d1dcdbf8ab40eb4e9fde3e8496e6b4e9809d6056e6069fc11ef5390e064dfef9f7eccec3452e7566b88ab861bf544b57dce249c4291142f307bd6465e45a update-wheel-tests.patch" +sha512sums="9fa00930a1923782c2f6356bf992410d42b3dd81b5a673e2957eaf8941787fbea324851c5df48e37601641d004ee900c88a1cfa97ef9df374879586a36efa5c6 py3-setuptools-39.1.0.tar.gz +ee248df4174240e90a35190e0a47bf0fa4cc5601adc64eff5fd585c8919e47c3a2bb6191b8333800016567d8a0f0f71b7c2306779ea7e4ab7c8951bdee28ef5e pythonpath.patch" diff --git a/user/py3-setuptools/pythonpath.patch b/user/py3-setuptools/pythonpath.patch index 371804f55..d9d78a861 100644 --- a/user/py3-setuptools/pythonpath.patch +++ b/user/py3-setuptools/pythonpath.patch @@ -1,10 +1,11 @@ ---- setuptools-38.4.0/tox.ini 2018-01-05 13:17:02.000000000 +0000 -+++ setuptools-38.4.0/tox.ini 2018-01-11 01:50:05.810000000 +0000 -@@ -6,6 +6,6 @@ - - [testenv] - deps=-rtests/requirements.txt --passenv=APPDATA USERPROFILE HOMEDRIVE HOMEPATH windir APPVEYOR -+passenv=APPDATA USERPROFILE HOMEDRIVE HOMEPATH windir APPVEYOR PYTHONPATH - commands=py.test {posargs} +--- setuptools-39.1.0/tox.ini 2018-04-28 07:07:00.000000000 -0400 ++++ setuptools-39.1.0/tox.ini 2018-05-22 00:25:02.969163171 -0400 +@@ -12,7 +12,7 @@ + setenv=COVERAGE_FILE={toxworkdir}/.coverage.{envname} + # TODO: The passed environment variables came from copying other tox.ini files + # These should probably be individually annotated to explain what needs them. +-passenv=APPDATA HOMEDRIVE HOMEPATH windir APPVEYOR APPVEYOR_* CI CODECOV_* TRAVIS TRAVIS_* ++passenv=APPDATA HOMEDRIVE HOMEPATH windir APPVEYOR APPVEYOR_* CI CODECOV_* TRAVIS TRAVIS_* PYTHONPATH + commands=pytest --cov-config={toxinidir}/tox.ini --cov-report= {posargs} usedevelop=True + diff --git a/user/py3-setuptools/update-wheel-tests.patch b/user/py3-setuptools/update-wheel-tests.patch deleted file mode 100644 index 769ef470f..000000000 --- a/user/py3-setuptools/update-wheel-tests.patch +++ /dev/null @@ -1,460 +0,0 @@ -From 41882016dbd6b334e6e10e2c3ac5afb9f5793ede Mon Sep 17 00:00:00 2001 -From: Paul Ganssle -Date: Fri, 6 Apr 2018 17:07:44 -0400 -Subject: [PATCH 1/2] Update wheel tests to reflect latest version - ---- - setuptools/tests/test_wheel.py | 16 ---------------- - 1 file changed, 16 deletions(-) - -diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py -index b6be6f1f0..d8d5ddb23 100644 ---- a/setuptools/tests/test_wheel.py -+++ b/setuptools/tests/test_wheel.py -@@ -161,11 +161,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - |-- foo/ - | |-- __init__.py -@@ -196,11 +194,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - |-- data_dir/ - | |-- data.txt -@@ -267,11 +263,9 @@ def __repr__(self): - foo-1.0-py{py_version}-{platform}.egg/ - |-- extension{shlib_ext} - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - ''' - ), -@@ -293,11 +287,9 @@ def __repr__(self): - foo-1.0-py{py_version}.egg/ - |-- header.h - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - ''' - ), -@@ -326,11 +318,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - | |-- scripts/ - | | |-- script.py -@@ -346,11 +336,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- requires.txt - | |-- top_level.txt - '''), -@@ -430,11 +418,9 @@ def __repr__(self): - foo-1.0-py{py_version}.egg/ - |-- foo-1.0-py{py_version}-nspkg.pth - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- namespace_packages.txt - | |-- top_level.txt - |-- foo/ -@@ -466,11 +452,9 @@ def __repr__(self): - ''' - foo-1.0-py{py_version}.egg/ - |-- EGG-INFO/ -- | |-- DESCRIPTION.rst - | |-- PKG-INFO - | |-- RECORD - | |-- WHEEL -- | |-- metadata.json - | |-- top_level.txt - |-- foo/ - | |-- __init__.py - -From ed3762fc7d16174a54b2fa83af1996decafd756f Mon Sep 17 00:00:00 2001 -From: Paul Ganssle -Date: Sat, 7 Apr 2018 13:38:31 -0400 -Subject: [PATCH 2/2] Switch test_wheel over to subset-based test - -This is both compatible with the old version of wheel (last one -supported under Python 3.3) and is more in line with our commitment, -which is that the wheel install provides at least these files. ---- - setuptools/tests/test_wheel.py | 268 ++++++++++++++++++++++------------------- - 1 file changed, 142 insertions(+), 126 deletions(-) - -diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py -index d8d5ddb23..150ac4c1b 100644 ---- a/setuptools/tests/test_wheel.py -+++ b/setuptools/tests/test_wheel.py -@@ -92,39 +92,49 @@ def build_wheel(extra_file_defs=None, **kwargs): - yield glob.glob(os.path.join(source_dir, 'dist', '*.whl'))[0] - - --def tree(root): -- def depth(path): -- return len(path.split(os.path.sep)) -- def prefix(path_depth): -- if not path_depth: -- return '' -- return '| ' * (path_depth - 1) + '|-- ' -- lines = [] -- root_depth = depth(root) -+def tree_set(root): -+ contents = set() - for dirpath, dirnames, filenames in os.walk(root): -- dirnames.sort() -- filenames.sort() -- dir_depth = depth(dirpath) - root_depth -- if dir_depth > 0: -- lines.append('%s%s/' % (prefix(dir_depth - 1), -- os.path.basename(dirpath))) -- for f in filenames: -- lines.append('%s%s' % (prefix(dir_depth), f)) -- return '\n'.join(lines) + '\n' -- -- --def _check_wheel_install(filename, install_dir, install_tree, -+ for filename in filenames: -+ contents.add(os.path.join(os.path.relpath(dirpath, root), -+ filename)) -+ return contents -+ -+ -+def flatten_tree(tree): -+ """Flatten nested dicts and lists into a full list of paths""" -+ output = set() -+ for node, contents in tree.items(): -+ if isinstance(contents, dict): -+ contents = flatten_tree(contents) -+ -+ for elem in contents: -+ if isinstance(elem, dict): -+ output |= {os.path.join(node, val) -+ for val in flatten_tree(elem)} -+ else: -+ output.add(os.path.join(node, elem)) -+ return output -+ -+ -+def format_install_tree(tree): -+ return {x.format( -+ py_version=PY_MAJOR, -+ platform=get_platform(), -+ shlib_ext=get_config_var('EXT_SUFFIX') or get_config_var('SO')) -+ for x in tree} -+ -+ -+def _check_wheel_install(filename, install_dir, install_tree_includes, - project_name, version, requires_txt): - w = Wheel(filename) - egg_path = os.path.join(install_dir, w.egg_name()) - w.install_as_egg(egg_path) -- if install_tree is not None: -- install_tree = install_tree.format( -- py_version=PY_MAJOR, -- platform=get_platform(), -- shlib_ext=get_config_var('EXT_SUFFIX') or get_config_var('SO') -- ) -- assert install_tree == tree(install_dir) -+ if install_tree_includes is not None: -+ install_tree = format_install_tree(install_tree_includes) -+ exp = tree_set(install_dir) -+ assert install_tree.issubset(exp), (install_tree - exp) -+ - metadata = PathMetadata(egg_path, os.path.join(egg_path, 'EGG-INFO')) - dist = Distribution.from_filename(egg_path, metadata=metadata) - assert dist.project_name == project_name -@@ -157,18 +167,17 @@ def __repr__(self): - setup_kwargs=dict( - packages=['foo'], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- |-- foo/ -- | |-- __init__.py -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt' -+ ], -+ 'foo': ['__init__.py'] -+ } -+ }), - ), - - dict( -@@ -190,18 +199,19 @@ def __repr__(self): - setup_kwargs=dict( - data_files=[('data_dir', ['data.txt'])], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- |-- data_dir/ -- | |-- data.txt -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt' -+ ], -+ 'data_dir': [ -+ 'data.txt' -+ ] -+ } -+ }), - ), - - dict( -@@ -258,17 +268,17 @@ def __repr__(self): - sources=['extension.c']) - ], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}-{platform}.egg/ -- |-- extension{shlib_ext} -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}-{platform}.egg': [ -+ 'extension{shlib_ext}', -+ {'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt', -+ ]}, -+ ] -+ }), - ), - - dict( -@@ -282,17 +292,17 @@ def __repr__(self): - setup_kwargs=dict( - headers=['header.h'], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- header.h -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': [ -+ 'header.h', -+ {'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt', -+ ]}, -+ ] -+ }), - ), - - dict( -@@ -314,34 +324,37 @@ def __repr__(self): - setup_kwargs=dict( - scripts=['script.py', 'script.sh'], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- | |-- scripts/ -- | | |-- script.py -- | | |-- script.sh -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt', -+ {'scripts': [ -+ 'script.py', -+ 'script.sh' -+ ]} -+ -+ ] -+ } -+ }) - ), - - dict( - id='requires1', - install_requires='foobar==2.0', -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- requires.txt -- | |-- top_level.txt -- '''), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'requires.txt', -+ 'top_level.txt', -+ ] -+ } -+ }), - requires_txt=DALS( - ''' - foobar==2.0 -@@ -413,21 +426,22 @@ def __repr__(self): - namespace_packages=['foo'], - packages=['foo.bar'], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- foo-1.0-py{py_version}-nspkg.pth -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- namespace_packages.txt -- | |-- top_level.txt -- |-- foo/ -- | |-- __init__.py -- | |-- bar/ -- | | |-- __init__.py -- '''), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': [ -+ 'foo-1.0-py{py_version}-nspkg.pth', -+ {'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'namespace_packages.txt', -+ 'top_level.txt', -+ ]}, -+ {'foo': [ -+ '__init__.py', -+ {'bar': ['__init__.py']}, -+ ]}, -+ ] -+ }), - ), - - dict( -@@ -448,20 +462,22 @@ def __repr__(self): - packages=['foo'], - data_files=[('foo/data_dir', ['foo/data_dir/data.txt'])], - ), -- install_tree=DALS( -- ''' -- foo-1.0-py{py_version}.egg/ -- |-- EGG-INFO/ -- | |-- PKG-INFO -- | |-- RECORD -- | |-- WHEEL -- | |-- top_level.txt -- |-- foo/ -- | |-- __init__.py -- | |-- data_dir/ -- | | |-- data.txt -- ''' -- ), -+ install_tree=flatten_tree({ -+ 'foo-1.0-py{py_version}.egg': { -+ 'EGG-INFO': [ -+ 'PKG-INFO', -+ 'RECORD', -+ 'WHEEL', -+ 'top_level.txt', -+ ], -+ 'foo': [ -+ '__init__.py', -+ {'data_dir': [ -+ 'data.txt', -+ ]} -+ ] -+ } -+ }), - ), - - ) -- cgit v1.2.3-70-g09d2 From f7e0c638da74c1b7fb54bb850b36991898cb3c89 Mon Sep 17 00:00:00 2001 From: Max Rees Date: Tue, 22 May 2018 01:12:29 -0400 Subject: user/py3-virtualenv: bump to 16.0.0 Commits: https://github.com/pypa/virtualenv/compare/15.1.0...16.0.0 Changelog: https://virtualenv.pypa.io/en/latest/changes/#id1 --- user/py3-virtualenv/APKBUILD | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/user/py3-virtualenv/APKBUILD b/user/py3-virtualenv/APKBUILD index 0d4212635..89f7a69b8 100644 --- a/user/py3-virtualenv/APKBUILD +++ b/user/py3-virtualenv/APKBUILD @@ -2,10 +2,10 @@ # Maintainer: Max Rees pkgname=py3-virtualenv _pkgname=virtualenv -pkgver=15.1.0 +pkgver=16.0.0 pkgrel=0 pkgdesc="Virtual Python Environment builder" -url="https://pypi.python.org/pypi/virtualenv" +url="https://pypi.org/project/virtualenv" arch="noarch" license="MIT" depends="python3" @@ -33,5 +33,5 @@ package() { python3 setup.py install --prefix=/usr --root="$pkgdir" } -sha512sums="d7e95b8c017ec076210f30b6fd4bb44be2f7dc0257492c25bb00fee597d3ade34226d03539180f1edaf2d27b361f8efdabb92d3476e13785b890878ee1295cb2 py3-virtualenv-15.1.0.tar.gz +sha512sums="43bc37f1da1b65e9a2df5a8813a801f27f5783b7211219d441d1c2132789917df42fdc0aba1d5ec51e3d6f7583af9474d59c1f532d8880c8c325ccc96e73b3df py3-virtualenv-16.0.0.tar.gz 8e022416eb10289fd5215f3810203eefb450ce2fca7bdc581b5cd1892f41f34815beec35fc6c744991536c1f2edebd58ab934a4414c6fe2ae6387aea02787ef8 test-python3.patch" -- cgit v1.2.3-70-g09d2