Thu May 4 10:03:52 2023 UTC ()
py-rope: update to 1.7.0.

# Release 1.7.0

## Feature

- #548 Implement MoveGlobal using string as destination module names (@lieryan)

## Bug

- #627 Fix parsing of octal literal (@lieryan)
- #643, #435 Fix fstrings with mismatched parens (@apmorton)
- #646 Fix renaming kwargs when refactoring from imports (@apmorton)
- #648 Remove __init__ from import statement when using sqlite autoimport (@bagel897)

## Improvements

- rope.contrib.generate improvements
  - #640 Remove unnecessary eval in generate.py (@edreamleo)
  - #641 Add type annotations for rope.contrib.generate.create_generate() (@edreamleo)

- call_for_nodes() improvements
  - #634 Remove call_for_nodes(recursive) argument (@edreamleo)
  - #642 Add comments & docstrings related to call_for_nodes (@edreamleo, @lieryan)

- Data storage improvements
  - #604 Fix test that sometimes leaves files behind in the current working directory (@lieryan)
  - #606 Deprecate compress_objectdb and compress_history (@lieryan)
  - #607 Remove importing from legacy files with `.pickle` suffix (@lieryan)
  - #611 Implement JSON DataFile serialization (@lieryan)
  - #630 SQLite models improvements (@lieryan)
  - #631 Implement version hash (@lieryan)

## Tech Debt

- #594 Tidy up patchedast (@Alex-CodeLab)
- #595 Global default DEFAULT_TASK_HANDLE (@Alex-CodeLab)
- #609, #610, #612, #613 Fix pyflakes issues (@edreamleo)
- #615 Remove 'unicode' from builtins dict (@edreamleo)
- #616, #621 Remove `file` builtins (@edreamleo)
- #618 Separate pynames and pynamesdef and remove star-import (@edreamleo, @lieryan)
- #620 Remove unused import in occurrences.py (@edreamleo)
- #625 Remove support for deprecated ast nodes (@lieryan)

## Tests/Dev

- #626 Install pre-commit hooks on rope repository (@lieryan)
- #628 Add isort to pre-commit
- #638 Add a function to identify ast Constant nodes more granularly

## Docs

- #636 Update readme to reflect 1.0 has been released.

# Release 1.6.0

## New features & Enhancements

- #559, #560 Improve handling of whitespace in import and from-import statements (@lieryan)
- #566, #567, #597 Fix variables in kwonlyargs and posonlyargs not being correctly passed to extracted methods (@lieryan)

## Unit Test

- #589, #596 Fix issue with `sample_project()` creating directories where it shouldn't when running tests (@lieryan)
- #547 Add config file for linters
- #593 Remove `only_for` decorator for all python versions less than 3.7 (@edreamleo)

## Tech Debt

- Code quality
  - #546 Remove unused vars in test (@lieryan, @edreamleo)
  - #551, #552 Numerous flake8 linter complaints (@edreamleo)
  - #558 Fix typos (@kianmeng)
  - #583, #584 More consistent import style (@edreamleo)
- Python 2-related tech debt
  - #533 Refactoring to Remove usage of unicode type (@lieryan)
  - #549, #553 Remove rope.base.utils.pycompat (@dreamleo)
  - #555 Fix some python2-isms (@lieryan)
- Rope's AST Wrapper
  - #536, #578 walk does not return a value (@edreamleo)
  - #537, #538 Remove special case code from walk (@edreamleo)
  - #581 Remove functions in rope.base.ast that has functionally identical implementation in stdlib's ast (@lieryan, @edreamleo)
  - #582 Refactoring rope.base.ast and remove rope.base.astutils (@lieryan, @edreamleo)
- pynames and pyobjects
  - #569, #572 rename pynames to pynamesdef in pyobjectsdef.ph (@edreamleo)

# Release 1.5.1

- #531 Add alternative way to retrieve version number from pyproject.toml

# Release 1.5.0

Date: 2022-11-23

- #492 Feat: Global configuration support (@bagel897)
- #519 Move pytest to pyproject.toml (@gliptak, @bagel897)
- #509 Fix read/write analysis of the left-hand side of an augmented assignment (@lieryan)
- #522 Implement patchedast parsing of MatchMapping (@lieryan)
- #514 Fix inlining dictionary with inline comment (@lieryan)

# Release 1.4.0

Date: 2022-10-22

## Bug fixes

- #506, #507 Fix issue with parsing function call args list
- #411, #505 Fix extracting generator without parens
- #18, #510 When the function is a builtin function, the call parameter's name was sometimes incorrectly identified as an AssignedName. This led to rename refactoring incorrectly renaming these parameters.

# Release 1.3.0

Date: 2022-07-29

## Bug fixes

- #496, #497 Add MatMul operator to patchedast
- #495 Fix autoimport collection for compiled modules

## Improvement

- #501, #502 Autoimport improvements

# Release 1.2.0

Date: 2022-04-22

## New feature

- #473 Pyproject.toml support (@bageljrkhanofemus)
- #489 Rope now publishes documentations to rope.readthedocs.org (@bageljrkhanofemus)
- #490 Migrate from setup.py to pyproject.toml (@bageljrkhanofemus)

## Improvement

- #479 Add ABC and type hints for TaskHandle and JobSet (@bageljrkhanofemus)
- #486 Drop Python 2 support (@bageljrkhanofemus, @lieryan)
- #487 Improved value inference of __all__ declaration (@lieryan)
- #424 Add some basic __repr__ to make it easier for debugging (@lieryan)


(wiz)
diff -r1.31 -r1.32 pkgsrc/devel/py-rope/Makefile
diff -r1.6 -r1.7 pkgsrc/devel/py-rope/PLIST
diff -r1.21 -r1.22 pkgsrc/devel/py-rope/distinfo

cvs diff -r1.31 -r1.32 pkgsrc/devel/py-rope/Makefile (expand / switch to unified diff)

--- pkgsrc/devel/py-rope/Makefile 2023/04/30 18:24:21 1.31
+++ pkgsrc/devel/py-rope/Makefile 2023/05/04 10:03:52 1.32
@@ -1,20 +1,22 @@ @@ -1,20 +1,22 @@
1# $NetBSD: Makefile,v 1.31 2023/04/30 18:24:21 wiz Exp $ 1# $NetBSD: Makefile,v 1.32 2023/05/04 10:03:52 wiz Exp $
2 2
3DISTNAME= rope-1.1.1 3DISTNAME= rope-1.7.0
4PKGNAME= ${PYPKGPREFIX}-${DISTNAME} 4PKGNAME= ${PYPKGPREFIX}-${DISTNAME}
5CATEGORIES= devel python 5CATEGORIES= devel python
6MASTER_SITES= ${MASTER_SITE_PYPI:=r/rope/} 6MASTER_SITES= ${MASTER_SITE_PYPI:=r/rope/}
7 7
8MAINTAINER= pkgsrc-users@NetBSD.org 8MAINTAINER= pkgsrc-users@NetBSD.org
9HOMEPAGE= https://github.com/python-rope/rope 9HOMEPAGE= https://github.com/python-rope/rope
10COMMENT= Python refactoring library 10COMMENT= Python refactoring library
11LICENSE= gnu-lgpl-v3 11LICENSE= gnu-lgpl-v3
12 12
13DEPENDS+= ${PYPKGPREFIX}-sqlite3-[0-9]*:../../databases/py-sqlite3 13DEPENDS+= ${PYPKGPREFIX}-sqlite3-[0-9]*:../../databases/py-sqlite3
 14DEPENDS+= ${PYPKGPREFIX}-toolconfig>=1.2.2:../../devel/py-toolconfig
 15TEST_DEPENDS+= ${PYPKGPREFIX}-test-[0-9]*:../../devel/py-test
14 16
15USE_LANGUAGES= # none 17USE_LANGUAGES= # none
16 18
17PYTHON_VERSIONS_INCOMPATIBLE= 27 19PYTHON_VERSIONS_INCOMPATIBLE= 27
18 20
19.include "../../lang/python/egg.mk" 21.include "../../lang/python/egg.mk"
20.include "../../mk/bsd.pkg.mk" 22.include "../../mk/bsd.pkg.mk"

cvs diff -r1.6 -r1.7 pkgsrc/devel/py-rope/PLIST (expand / switch to unified diff)

--- pkgsrc/devel/py-rope/PLIST 2023/04/30 18:24:21 1.6
+++ pkgsrc/devel/py-rope/PLIST 2023/05/04 10:03:52 1.7
@@ -1,61 +1,58 @@ @@ -1,61 +1,58 @@
1@comment $NetBSD: PLIST,v 1.6 2023/04/30 18:24:21 wiz Exp $ 1@comment $NetBSD: PLIST,v 1.7 2023/05/04 10:03:52 wiz Exp $
2${PYSITELIB}/${EGG_INFODIR}/PKG-INFO 2${PYSITELIB}/${EGG_INFODIR}/PKG-INFO
3${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt 3${PYSITELIB}/${EGG_INFODIR}/SOURCES.txt
4${PYSITELIB}/${EGG_INFODIR}/dependency_links.txt 4${PYSITELIB}/${EGG_INFODIR}/dependency_links.txt
5${PYSITELIB}/${EGG_INFODIR}/requires.txt 5${PYSITELIB}/${EGG_INFODIR}/requires.txt
6${PYSITELIB}/${EGG_INFODIR}/top_level.txt 6${PYSITELIB}/${EGG_INFODIR}/top_level.txt
7${PYSITELIB}/rope/__init__.py 7${PYSITELIB}/rope/__init__.py
8${PYSITELIB}/rope/__init__.pyc 8${PYSITELIB}/rope/__init__.pyc
9${PYSITELIB}/rope/__init__.pyo 9${PYSITELIB}/rope/__init__.pyo
10${PYSITELIB}/rope/base/__init__.py 10${PYSITELIB}/rope/base/__init__.py
11${PYSITELIB}/rope/base/__init__.pyc 11${PYSITELIB}/rope/base/__init__.pyc
12${PYSITELIB}/rope/base/__init__.pyo 12${PYSITELIB}/rope/base/__init__.pyo
13${PYSITELIB}/rope/base/arguments.py 13${PYSITELIB}/rope/base/arguments.py
14${PYSITELIB}/rope/base/arguments.pyc 14${PYSITELIB}/rope/base/arguments.pyc
15${PYSITELIB}/rope/base/arguments.pyo 15${PYSITELIB}/rope/base/arguments.pyo
16${PYSITELIB}/rope/base/ast.py 16${PYSITELIB}/rope/base/ast.py
17${PYSITELIB}/rope/base/ast.pyc 17${PYSITELIB}/rope/base/ast.pyc
18${PYSITELIB}/rope/base/ast.pyo 18${PYSITELIB}/rope/base/ast.pyo
19${PYSITELIB}/rope/base/astutils.py 
20${PYSITELIB}/rope/base/astutils.pyc 
21${PYSITELIB}/rope/base/astutils.pyo 
22${PYSITELIB}/rope/base/builtins.py 19${PYSITELIB}/rope/base/builtins.py
23${PYSITELIB}/rope/base/builtins.pyc 20${PYSITELIB}/rope/base/builtins.pyc
24${PYSITELIB}/rope/base/builtins.pyo 21${PYSITELIB}/rope/base/builtins.pyo
25${PYSITELIB}/rope/base/change.py 22${PYSITELIB}/rope/base/change.py
26${PYSITELIB}/rope/base/change.pyc 23${PYSITELIB}/rope/base/change.pyc
27${PYSITELIB}/rope/base/change.pyo 24${PYSITELIB}/rope/base/change.pyo
28${PYSITELIB}/rope/base/codeanalyze.py 25${PYSITELIB}/rope/base/codeanalyze.py
29${PYSITELIB}/rope/base/codeanalyze.pyc 26${PYSITELIB}/rope/base/codeanalyze.pyc
30${PYSITELIB}/rope/base/codeanalyze.pyo 27${PYSITELIB}/rope/base/codeanalyze.pyo
31${PYSITELIB}/rope/base/default_config.py 
32${PYSITELIB}/rope/base/default_config.pyc 
33${PYSITELIB}/rope/base/default_config.pyo 
34${PYSITELIB}/rope/base/evaluate.py 28${PYSITELIB}/rope/base/evaluate.py
35${PYSITELIB}/rope/base/evaluate.pyc 29${PYSITELIB}/rope/base/evaluate.pyc
36${PYSITELIB}/rope/base/evaluate.pyo 30${PYSITELIB}/rope/base/evaluate.pyo
37${PYSITELIB}/rope/base/exceptions.py 31${PYSITELIB}/rope/base/exceptions.py
38${PYSITELIB}/rope/base/exceptions.pyc 32${PYSITELIB}/rope/base/exceptions.pyc
39${PYSITELIB}/rope/base/exceptions.pyo 33${PYSITELIB}/rope/base/exceptions.pyo
40${PYSITELIB}/rope/base/fscommands.py 34${PYSITELIB}/rope/base/fscommands.py
41${PYSITELIB}/rope/base/fscommands.pyc 35${PYSITELIB}/rope/base/fscommands.pyc
42${PYSITELIB}/rope/base/fscommands.pyo 36${PYSITELIB}/rope/base/fscommands.pyo
43${PYSITELIB}/rope/base/history.py 37${PYSITELIB}/rope/base/history.py
44${PYSITELIB}/rope/base/history.pyc 38${PYSITELIB}/rope/base/history.pyc
45${PYSITELIB}/rope/base/history.pyo 39${PYSITELIB}/rope/base/history.pyo
46${PYSITELIB}/rope/base/libutils.py 40${PYSITELIB}/rope/base/libutils.py
47${PYSITELIB}/rope/base/libutils.pyc 41${PYSITELIB}/rope/base/libutils.pyc
48${PYSITELIB}/rope/base/libutils.pyo 42${PYSITELIB}/rope/base/libutils.pyo
 43${PYSITELIB}/rope/base/nameanalyze.py
 44${PYSITELIB}/rope/base/nameanalyze.pyc
 45${PYSITELIB}/rope/base/nameanalyze.pyo
49${PYSITELIB}/rope/base/oi/__init__.py 46${PYSITELIB}/rope/base/oi/__init__.py
50${PYSITELIB}/rope/base/oi/__init__.pyc 47${PYSITELIB}/rope/base/oi/__init__.pyc
51${PYSITELIB}/rope/base/oi/__init__.pyo 48${PYSITELIB}/rope/base/oi/__init__.pyo
52${PYSITELIB}/rope/base/oi/doa.py 49${PYSITELIB}/rope/base/oi/doa.py
53${PYSITELIB}/rope/base/oi/doa.pyc 50${PYSITELIB}/rope/base/oi/doa.pyc
54${PYSITELIB}/rope/base/oi/doa.pyo 51${PYSITELIB}/rope/base/oi/doa.pyo
55${PYSITELIB}/rope/base/oi/memorydb.py 52${PYSITELIB}/rope/base/oi/memorydb.py
56${PYSITELIB}/rope/base/oi/memorydb.pyc 53${PYSITELIB}/rope/base/oi/memorydb.pyc
57${PYSITELIB}/rope/base/oi/memorydb.pyo 54${PYSITELIB}/rope/base/oi/memorydb.pyo
58${PYSITELIB}/rope/base/oi/objectdb.py 55${PYSITELIB}/rope/base/oi/objectdb.py
59${PYSITELIB}/rope/base/oi/objectdb.pyc 56${PYSITELIB}/rope/base/oi/objectdb.pyc
60${PYSITELIB}/rope/base/oi/objectdb.pyo 57${PYSITELIB}/rope/base/oi/objectdb.pyo
61${PYSITELIB}/rope/base/oi/objectinfo.py 58${PYSITELIB}/rope/base/oi/objectinfo.py
@@ -141,56 +138,62 @@ ${PYSITELIB}/rope/base/pyobjects.pyc @@ -141,56 +138,62 @@ ${PYSITELIB}/rope/base/pyobjects.pyc
141${PYSITELIB}/rope/base/pyobjects.pyo 138${PYSITELIB}/rope/base/pyobjects.pyo
142${PYSITELIB}/rope/base/pyobjectsdef.py 139${PYSITELIB}/rope/base/pyobjectsdef.py
143${PYSITELIB}/rope/base/pyobjectsdef.pyc 140${PYSITELIB}/rope/base/pyobjectsdef.pyc
144${PYSITELIB}/rope/base/pyobjectsdef.pyo 141${PYSITELIB}/rope/base/pyobjectsdef.pyo
145${PYSITELIB}/rope/base/pyscopes.py 142${PYSITELIB}/rope/base/pyscopes.py
146${PYSITELIB}/rope/base/pyscopes.pyc 143${PYSITELIB}/rope/base/pyscopes.pyc
147${PYSITELIB}/rope/base/pyscopes.pyo 144${PYSITELIB}/rope/base/pyscopes.pyo
148${PYSITELIB}/rope/base/resourceobserver.py 145${PYSITELIB}/rope/base/resourceobserver.py
149${PYSITELIB}/rope/base/resourceobserver.pyc 146${PYSITELIB}/rope/base/resourceobserver.pyc
150${PYSITELIB}/rope/base/resourceobserver.pyo 147${PYSITELIB}/rope/base/resourceobserver.pyo
151${PYSITELIB}/rope/base/resources.py 148${PYSITELIB}/rope/base/resources.py
152${PYSITELIB}/rope/base/resources.pyc 149${PYSITELIB}/rope/base/resources.pyc
153${PYSITELIB}/rope/base/resources.pyo 150${PYSITELIB}/rope/base/resources.pyo
 151${PYSITELIB}/rope/base/serializer.py
 152${PYSITELIB}/rope/base/serializer.pyc
 153${PYSITELIB}/rope/base/serializer.pyo
154${PYSITELIB}/rope/base/simplify.py 154${PYSITELIB}/rope/base/simplify.py
155${PYSITELIB}/rope/base/simplify.pyc 155${PYSITELIB}/rope/base/simplify.pyc
156${PYSITELIB}/rope/base/simplify.pyo 156${PYSITELIB}/rope/base/simplify.pyo
157${PYSITELIB}/rope/base/stdmods.py 157${PYSITELIB}/rope/base/stdmods.py
158${PYSITELIB}/rope/base/stdmods.pyc 158${PYSITELIB}/rope/base/stdmods.pyc
159${PYSITELIB}/rope/base/stdmods.pyo 159${PYSITELIB}/rope/base/stdmods.pyo
160${PYSITELIB}/rope/base/taskhandle.py 160${PYSITELIB}/rope/base/taskhandle.py
161${PYSITELIB}/rope/base/taskhandle.pyc 161${PYSITELIB}/rope/base/taskhandle.pyc
162${PYSITELIB}/rope/base/taskhandle.pyo 162${PYSITELIB}/rope/base/taskhandle.pyo
163${PYSITELIB}/rope/base/utils/__init__.py 163${PYSITELIB}/rope/base/utils/__init__.py
164${PYSITELIB}/rope/base/utils/__init__.pyc 164${PYSITELIB}/rope/base/utils/__init__.pyc
165${PYSITELIB}/rope/base/utils/__init__.pyo 165${PYSITELIB}/rope/base/utils/__init__.pyo
166${PYSITELIB}/rope/base/utils/datastructures.py 166${PYSITELIB}/rope/base/utils/datastructures.py
167${PYSITELIB}/rope/base/utils/datastructures.pyc 167${PYSITELIB}/rope/base/utils/datastructures.pyc
168${PYSITELIB}/rope/base/utils/datastructures.pyo 168${PYSITELIB}/rope/base/utils/datastructures.pyo
169${PYSITELIB}/rope/base/utils/pycompat.py 169${PYSITELIB}/rope/base/versioning.py
170${PYSITELIB}/rope/base/utils/pycompat.pyc 170${PYSITELIB}/rope/base/versioning.pyc
171${PYSITELIB}/rope/base/utils/pycompat.pyo 171${PYSITELIB}/rope/base/versioning.pyo
172${PYSITELIB}/rope/base/worder.py 172${PYSITELIB}/rope/base/worder.py
173${PYSITELIB}/rope/base/worder.pyc 173${PYSITELIB}/rope/base/worder.pyc
174${PYSITELIB}/rope/base/worder.pyo 174${PYSITELIB}/rope/base/worder.pyo
175${PYSITELIB}/rope/contrib/__init__.py 175${PYSITELIB}/rope/contrib/__init__.py
176${PYSITELIB}/rope/contrib/__init__.pyc 176${PYSITELIB}/rope/contrib/__init__.pyc
177${PYSITELIB}/rope/contrib/__init__.pyo 177${PYSITELIB}/rope/contrib/__init__.pyo
178${PYSITELIB}/rope/contrib/autoimport/__init__.py 178${PYSITELIB}/rope/contrib/autoimport/__init__.py
179${PYSITELIB}/rope/contrib/autoimport/__init__.pyc 179${PYSITELIB}/rope/contrib/autoimport/__init__.pyc
180${PYSITELIB}/rope/contrib/autoimport/__init__.pyo 180${PYSITELIB}/rope/contrib/autoimport/__init__.pyo
181${PYSITELIB}/rope/contrib/autoimport/defs.py 181${PYSITELIB}/rope/contrib/autoimport/defs.py
182${PYSITELIB}/rope/contrib/autoimport/defs.pyc 182${PYSITELIB}/rope/contrib/autoimport/defs.pyc
183${PYSITELIB}/rope/contrib/autoimport/defs.pyo 183${PYSITELIB}/rope/contrib/autoimport/defs.pyo
 184${PYSITELIB}/rope/contrib/autoimport/models.py
 185${PYSITELIB}/rope/contrib/autoimport/models.pyc
 186${PYSITELIB}/rope/contrib/autoimport/models.pyo
184${PYSITELIB}/rope/contrib/autoimport/parse.py 187${PYSITELIB}/rope/contrib/autoimport/parse.py
185${PYSITELIB}/rope/contrib/autoimport/parse.pyc 188${PYSITELIB}/rope/contrib/autoimport/parse.pyc
186${PYSITELIB}/rope/contrib/autoimport/parse.pyo 189${PYSITELIB}/rope/contrib/autoimport/parse.pyo
187${PYSITELIB}/rope/contrib/autoimport/pickle.py 190${PYSITELIB}/rope/contrib/autoimport/pickle.py
188${PYSITELIB}/rope/contrib/autoimport/pickle.pyc 191${PYSITELIB}/rope/contrib/autoimport/pickle.pyc
189${PYSITELIB}/rope/contrib/autoimport/pickle.pyo 192${PYSITELIB}/rope/contrib/autoimport/pickle.pyo
190${PYSITELIB}/rope/contrib/autoimport/sqlite.py 193${PYSITELIB}/rope/contrib/autoimport/sqlite.py
191${PYSITELIB}/rope/contrib/autoimport/sqlite.pyc 194${PYSITELIB}/rope/contrib/autoimport/sqlite.pyc
192${PYSITELIB}/rope/contrib/autoimport/sqlite.pyo 195${PYSITELIB}/rope/contrib/autoimport/sqlite.pyo
193${PYSITELIB}/rope/contrib/autoimport/utils.py 196${PYSITELIB}/rope/contrib/autoimport/utils.py
194${PYSITELIB}/rope/contrib/autoimport/utils.pyc 197${PYSITELIB}/rope/contrib/autoimport/utils.pyc
195${PYSITELIB}/rope/contrib/autoimport/utils.pyo 198${PYSITELIB}/rope/contrib/autoimport/utils.pyo
196${PYSITELIB}/rope/contrib/changestack.py 199${PYSITELIB}/rope/contrib/changestack.py

cvs diff -r1.21 -r1.22 pkgsrc/devel/py-rope/distinfo (expand / switch to unified diff)

--- pkgsrc/devel/py-rope/distinfo 2023/04/30 18:24:21 1.21
+++ pkgsrc/devel/py-rope/distinfo 2023/05/04 10:03:52 1.22
@@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
1$NetBSD: distinfo,v 1.21 2023/04/30 18:24:21 wiz Exp $ 1$NetBSD: distinfo,v 1.22 2023/05/04 10:03:52 wiz Exp $
2 2
3BLAKE2s (rope-1.1.1.tar.gz) = 7573a11feaf63b7c21d16ceb5f39dcd59e03f89fc8baeb3e1a19fbd8acab213d 3BLAKE2s (rope-1.7.0.tar.gz) = b4db393c1cb8f5adaa2dbd6145f7d05b5e5cd535e73dd7450040271c8dbf09c3
4SHA512 (rope-1.1.1.tar.gz) = aaf664a63ef00e3c844d6999338fe6a3384ddecfe95ef9b7eb213e5c37c9f78f7d2ea59aa7e612487bac5eaaaf7fc8ba499c0d43c740f99a7b3be64c9d7f6e07 4SHA512 (rope-1.7.0.tar.gz) = 13cc3a2041c58c142892d1c9e5105ecdaa672e012364a5d4ccf82dbf5110fe0b6f0362b3a0309e9e6b72ab1d267dfc58eae8f3af3a8756f0356a6aff06c09abd
5Size (rope-1.1.1.tar.gz) = 274610 bytes 5Size (rope-1.7.0.tar.gz) = 295362 bytes