From 1255efb52917a4b4f367c0c74af90260504b03e6 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Fri, 15 Sep 2017 14:26:48 +0200 Subject: [PATCH 01/18] create pyup.io config file --- .pyup.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .pyup.yml diff --git a/.pyup.yml b/.pyup.yml new file mode 100644 index 0000000..30182e6 --- /dev/null +++ b/.pyup.yml @@ -0,0 +1,4 @@ +# autogenerated pyup.io config file +# see https://pyup.io/docs/configuration/ for all available options + +schedule: every month From de8d53b0b48f6319ea8f2df34778f8ec59a7af7c Mon Sep 17 00:00:00 2001 From: Wouter Claeys Date: Thu, 12 Oct 2017 15:37:20 +0200 Subject: [PATCH 02/18] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 93b4429..cab2d8d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ pyramid==1.5 pyramid_rewrite==0.2 # pairtree -pairtree>=0.5.8 +pairtree==0.7.1-T python-magic==0.4.13 venusian==1.0 From d8063e4812c94e8ae7ea9c0ee73af3a217b52f92 Mon Sep 17 00:00:00 2001 From: Wouter Claeys Date: Thu, 12 Oct 2017 15:38:37 +0200 Subject: [PATCH 03/18] Update HISTORY.rst --- HISTORY.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/HISTORY.rst b/HISTORY.rst index 04543e9..08bb050 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,3 +1,8 @@ +0.3.1 (12-10-2017) +------------------ + +- Fix pairtree dependency==0.7.1-T + 0.3.0 (22-08-2017) ------------------ From ba7db8395feca02747b429cabb7d0c3290bf3300 Mon Sep 17 00:00:00 2001 From: Wouter Claeys Date: Thu, 12 Oct 2017 15:38:50 +0200 Subject: [PATCH 04/18] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index f45db84..b653f97 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ ] setup(name='augeias', - version='0.3.0', + version='0.3.1', description='Augeias. Stores your files.', long_description=README + '\n\n' + HISTORY, classifiers=[ From 7299df7b343c9ba1ca137155dcf8bb13c1eab9dc Mon Sep 17 00:00:00 2001 From: Wouter Claeys Date: Thu, 12 Oct 2017 15:39:18 +0200 Subject: [PATCH 05/18] Update setup.py --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b653f97..ddf628e 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ requires = [ 'pyramid', - 'pairtree', + 'pairtree==0.7.1-T', 'python-magic', 'pyramid_rewrite' ] From ec0e5df138e74384ab927c65cb71f1e9278aa98f Mon Sep 17 00:00:00 2001 From: cecemel Date: Wed, 18 Oct 2017 15:03:50 +0200 Subject: [PATCH 06/18] while waiting for the published pypi package, we fetch directly from github --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index cab2d8d..80927e4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,8 @@ pyramid==1.5 pyramid_rewrite==0.2 # pairtree -pairtree==0.7.1-T +git+https://github.com/benosteen/pairtree.git@56a5ffdf258c30a3ce210868a2ea1258d779509e#egg=pairtree +#pairtree==0.7.1-T python-magic==0.4.13 venusian==1.0 From 02ff541e5c6f3c82b7ee0f6a91acbfb9f690a7c6 Mon Sep 17 00:00:00 2001 From: cecemel Date: Wed, 18 Oct 2017 15:04:53 +0200 Subject: [PATCH 07/18] fixing python2.7 only issue (ints will be autopromoted when going for a long) --- augeias/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/augeias/views.py b/augeias/views.py index e07b8a6..e6bf73f 100644 --- a/augeias/views.py +++ b/augeias/views.py @@ -183,9 +183,9 @@ def delete_container(self): # HELPERS -def _is_long(s): +def _is_integer(s): try: - long(s) + int(s) # python 2.7 'auto-promotes' int to long if required return True except ValueError: return False @@ -199,9 +199,9 @@ def _get_object_data(request): def _get_object_data_from_stream(request): - if 'Content-Length' not in request.headers or not _is_long(request.headers['Content-Length']): + if 'Content-Length' not in request.headers or not _is_integer(request.headers['Content-Length']): raise HTTPLengthRequired - content_length = long(request.headers['Content-Length']) + content_length = int(request.headers['Content-Length']) object_data = request.body_file if content_length == 0: raise HTTPBadRequest('body is empty') From 00ab5bba2e17d6b15f0199306f3a340c41587989 Mon Sep 17 00:00:00 2001 From: cecemel Date: Wed, 18 Oct 2017 15:07:12 +0200 Subject: [PATCH 08/18] trying to add some checks to compensate for silent fail in pairtree. (we need a PR for this) --- augeias/stores/PairTreeFileSystemStore.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/augeias/stores/PairTreeFileSystemStore.py b/augeias/stores/PairTreeFileSystemStore.py index 589d70e..b58b41e 100644 --- a/augeias/stores/PairTreeFileSystemStore.py +++ b/augeias/stores/PairTreeFileSystemStore.py @@ -9,6 +9,7 @@ import os import magic import datetime +import sys class PairTreeFileSystemStore(IStore): @@ -58,7 +59,7 @@ def get_object_info(self, container_key, object_key): return { 'time_last_modification': datetime.datetime.fromtimestamp(file_stat.st_mtime).isoformat(), 'size': file_stat.st_size, - 'mime': magic.from_buffer(open(file_path).read(1048576), mime=True) or 'application/octet-stream' + 'mime': magic.from_buffer(open(file_path, 'rb').read(1048576), mime=True) or 'application/octet-stream' } def create_object(self, container_key, object_key, object_data): @@ -70,6 +71,7 @@ def create_object(self, container_key, object_key, object_data): :param str object_data: The data for the object to create. :raises augeias.stores.error.NotFoundException: When the container could not be found. ''' + _cast_data(object_data) container = self._get_container(container_key) container.add_bytestream(object_key, object_data) @@ -82,6 +84,7 @@ def update_object(self, container_key, object_key, object_data): :param str object_data: New data for the object. :raises augeias.stores.error.NotFoundException: When the object or container could not be found. ''' + _cast_data(object_data) container = self.store.get_object(container_key, False) container.add_bytestream(object_key, object_data) @@ -130,3 +133,20 @@ def delete_container(self, container_key): self.store.delete_object(container_key) except ObjectNotFoundException: raise NotFoundException + + +def _is_allowed_data(data): + # not exhaustive. + python_version = sys.version_info.major + if python_version < 3 and isinstance(data, unicode): + return False + + if python_version >= 3 and isinstance(data, str): + return False + + return True + + +def _cast_data(data): + if not _is_allowed_data(data): + raise IOError('Data type is not allowed') \ No newline at end of file From b1fdeb391cc51138e69f3720a4c61ec5eb3f42fa Mon Sep 17 00:00:00 2001 From: cecemel Date: Wed, 18 Oct 2017 15:07:32 +0200 Subject: [PATCH 09/18] fixing tests --- tests/test_functional.py | 35 +++++++++++++++++++---------------- tests/test_stores.py | 16 ++++++++-------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/tests/test_functional.py b/tests/test_functional.py index 3d30e84..8282a61 100644 --- a/tests/test_functional.py +++ b/tests/test_functional.py @@ -9,10 +9,13 @@ from augeias.collections import Collection from augeias.stores.PairTreeFileSystemStore import PairTreeFileSystemStore import json +import sys here = os.path.dirname(__file__) settings = get_appsettings(os.path.join(here, 'conf_test.ini')) +python_version = sys.version_info.major + def collections_include(config, store_dir): test_collection = Collection(name='TEST_COLLECTION', object_store=PairTreeFileSystemStore(store_dir)) @@ -50,8 +53,8 @@ def test_create_container(self): res = self.testapp.put('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID') self.assertEqual('200 OK', res.status) self.assertIn('application/json', res.headers['Content-Type']) - self.assertIn('TEST_CONTAINER_ID', res.body) - self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID', res.body) + self.assertIn('TEST_CONTAINER_ID', res.text) + self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID', res.text) def test_add_object(self): @@ -65,9 +68,9 @@ def test_add_object(self): res = self.testapp.put('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', bdata) self.assertEqual('200 OK', res.status) self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', - res.body) - self.assertIn('TEST_CONTAINER_ID', res.body) - self.assertIn('200x300', res.body) + res.text) + self.assertIn('TEST_CONTAINER_ID', res.text) + self.assertIn('200x300', res.text) def test_add_object_content_length_errors(self): # create a container @@ -90,14 +93,14 @@ def test_get_object(self): cres = self.testapp.put('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID') self.assertEqual('200 OK', cres.status) self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID', - cres.body) + cres.text) testdata = os.path.join(here, '../', 'fixtures/kasteel.jpg') with open(testdata, 'rb') as f: bdata = f.read() file_size = len(bdata) ores = self.testapp.put('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', bdata) self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', - ores.body) + ores.text) self.assertEqual('200 OK', ores.status) res = self.testapp.get('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300') @@ -110,13 +113,13 @@ def test_get_object_info(self): cres = self.testapp.put('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID') self.assertEqual('200 OK', cres.status) self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID', - cres.body) + cres.text) testdata = os.path.join(here, '../', 'fixtures/kasteel.jpg') with open(testdata, 'rb') as f: bdata = f.read() ores = self.testapp.put('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', bdata) self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', - ores.body) + ores.text) self.assertEqual('200 OK', ores.status) res = self.testapp.get('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300/meta') @@ -154,7 +157,7 @@ def test_list_object_keys_for_container(self): res = self.testapp.get('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID') self.assertEqual('200 OK', res.status) - l = ast.literal_eval(res.body) + l = ast.literal_eval(res.text) l = [i.strip() for i in l] self.assertTrue('200x300' in l and '400x600' in l) @@ -168,7 +171,7 @@ def test_update_object(self): ores = self.testapp.put('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', bdata) self.assertEqual('200 OK', ores.status) self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', - ores.body) + ores.text) testdata = os.path.join(here, '../', 'fixtures/brug.jpg') with open(testdata, 'rb') as f: @@ -203,7 +206,7 @@ def test_copy_object(self): ores = self.testapp.put('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', bdata) self.assertEqual('200 OK', ores.status) self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', - ores.body) + ores.text) cres2 = self.testapp.put('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID2') self.assertEqual('200 OK', cres2.status) json_data = json.dumps({ @@ -278,8 +281,8 @@ def test_delete_object(self): self.assertIn(self.storage_location + 'collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', res.json_body['uri']) self.assertEqual('200 OK', res.status) - self.assertIn('TEST_CONTAINER_ID', res.body) - self.assertIn('200x300', res.body) + self.assertIn('TEST_CONTAINER_ID', res.text) + self.assertIn('200x300', res.text) res = self.testapp.get('/collections/TEST_COLLECTION/containers/TEST_CONTAINER_ID/200x300', status=404, expect_errors=True) @@ -305,7 +308,7 @@ def test_create_container_with_id(self): self.assertEqual('201 Created', res.status) uuid4hex = re.compile('[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\Z', re.I) container_key = res.json_body['container_key'] - if isinstance(container_key, unicode): + if python_version < 3 and isinstance(container_key, unicode): container_key = str(container_key) self.assertTrue(uuid4hex.match(container_key)) print(res.json_body['uri']) @@ -320,7 +323,7 @@ def test_create_object_with_id(self): self.assertEqual('201 Created', res.status) uuid4hex = re.compile('[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}\Z', re.I) object_key = res.json_body['object_key'] - if isinstance(object_key, unicode): + if python_version < 3 and isinstance(object_key, unicode): object_key = str(object_key) self.assertTrue(uuid4hex.match(object_key)) print(res.json_body['uri']) diff --git a/tests/test_stores.py b/tests/test_stores.py index ee6115d..37a709d 100644 --- a/tests/test_stores.py +++ b/tests/test_stores.py @@ -22,12 +22,12 @@ def test_usage_scenario(self): container_key = 'testing' object_key = 'metadata' self.store.create_container(container_key) - self.store.create_object(container_key, object_key, 'some test data') + self.store.create_object(container_key, object_key, b'some test data') object_list = self.store.list_object_keys_for_container(container_key) self.assertEqual(1, len(object_list)) self.assertEqual(object_key, object_list[0]) object_value = self.store.get_object(container_key, object_key) - self.assertEqual('some test data', object_value) + self.assertEqual(b'some test data', object_value) self.store.delete_object(container_key, object_key) object_list = self.store.list_object_keys_for_container(container_key) self.assertEqual(0, len(object_list)) @@ -70,25 +70,25 @@ def test_update_scenario(self): container_key = 'testing' object_key = 'metadata' self.store.create_container(container_key) - self.store.create_object(container_key, object_key, 'some test data') + self.store.create_object(container_key, object_key, b'some test data') object_value = self.store.get_object(container_key, object_key) - self.assertEqual('some test data', object_value) - self.store.update_object(container_key, object_key, 'updated data') + self.assertEqual(b'some test data', object_value) + self.store.update_object(container_key, object_key, b'updated data') object_value = self.store.get_object(container_key, object_key) - self.assertEqual('updated data', object_value) + self.assertEqual(b'updated data', object_value) def test_delete_nonexisting(self): container_key = 'testing' object_key = 'metadata' self.store.create_container(container_key) - self.store.create_object(container_key, object_key, 'some test data') + self.store.create_object(container_key, object_key, b'some test data') self.assertRaises(NotFoundException, self.store.delete_object, container_key, 'nogo') def test_add_object_to_nonexisting_container(self): error_raised = False self.store.create_container('x') try: - self.store.create_object('xx', '253', 'some test data') + self.store.create_object('xx', '253', b'some test data') except NotFoundException: error_raised = True self.assertTrue(error_raised) From ec111b9ed0121c8f79c204bb5030425f1453c4cc Mon Sep 17 00:00:00 2001 From: cecemel Date: Wed, 18 Oct 2017 15:07:49 +0200 Subject: [PATCH 10/18] updating config --- .travis.yml | 1 + setup.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6c2c740..57dc495 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: python sudo: false python: - "2.7" + - "3.5" env: - PROJECT=augeias notifications: diff --git a/setup.py b/setup.py index ddf628e..b653f97 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ requires = [ 'pyramid', - 'pairtree==0.7.1-T', + 'pairtree', 'python-magic', 'pyramid_rewrite' ] From 25e9e5a86c4c7b6ce11dc4524f604381235d4de1 Mon Sep 17 00:00:00 2001 From: cecemel Date: Thu, 19 Oct 2017 10:47:28 +0200 Subject: [PATCH 11/18] renamed function --- augeias/stores/PairTreeFileSystemStore.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/augeias/stores/PairTreeFileSystemStore.py b/augeias/stores/PairTreeFileSystemStore.py index b58b41e..0f9f5ce 100644 --- a/augeias/stores/PairTreeFileSystemStore.py +++ b/augeias/stores/PairTreeFileSystemStore.py @@ -71,7 +71,7 @@ def create_object(self, container_key, object_key, object_data): :param str object_data: The data for the object to create. :raises augeias.stores.error.NotFoundException: When the container could not be found. ''' - _cast_data(object_data) + _validate_data(object_data) container = self._get_container(container_key) container.add_bytestream(object_key, object_data) @@ -84,7 +84,7 @@ def update_object(self, container_key, object_key, object_data): :param str object_data: New data for the object. :raises augeias.stores.error.NotFoundException: When the object or container could not be found. ''' - _cast_data(object_data) + _validate_data(object_data) container = self.store.get_object(container_key, False) container.add_bytestream(object_key, object_data) @@ -147,6 +147,6 @@ def _is_allowed_data(data): return True -def _cast_data(data): +def _validate_data(data): if not _is_allowed_data(data): raise IOError('Data type is not allowed') \ No newline at end of file From 4e55a7eda5d55f9c65ebf079ce893c7fad9fd8d3 Mon Sep 17 00:00:00 2001 From: cecemel Date: Thu, 19 Oct 2017 10:58:42 +0200 Subject: [PATCH 12/18] update requirements because coveralls asks me to --- requirements-dev.txt | 2 +- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index eb22a79..364ba34 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -19,7 +19,7 @@ sphinxcontrib-httpdomain==1.2.1 sphinx_rtd_theme==0.1.9 # waitress -waitress==0.8.8 +waitress==1.1.0 # Linting flake8==2.1.0 diff --git a/requirements.txt b/requirements.txt index 80927e4..fac1cbf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # pyramid -pyramid==1.5 +pyramid==1.8 pyramid_rewrite==0.2 # pairtree From c4c1e17b59a7123ae475d453fa02e1be40c5f0d6 Mon Sep 17 00:00:00 2001 From: cecemel Date: Fri, 20 Oct 2017 13:29:39 +0200 Subject: [PATCH 13/18] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index fac1cbf..51727d7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ git+https://github.com/benosteen/pairtree.git@56a5ffdf258c30a3ce210868a2ea1258d7 python-magic==0.4.13 venusian==1.0 -webob==1.4 +webob==1.7 PasteDeploy==1.5.2 repoze.lru==0.6 From 335689b597390dff72d44e1bd7d8a75d9c3292ff Mon Sep 17 00:00:00 2001 From: cecemel Date: Mon, 23 Oct 2017 17:54:56 +0200 Subject: [PATCH 14/18] fixing coverage --- augeias/stores/PairTreeFileSystemStore.py | 2 +- tests/test_stores.py | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/augeias/stores/PairTreeFileSystemStore.py b/augeias/stores/PairTreeFileSystemStore.py index 0f9f5ce..139858f 100644 --- a/augeias/stores/PairTreeFileSystemStore.py +++ b/augeias/stores/PairTreeFileSystemStore.py @@ -135,7 +135,7 @@ def delete_container(self, container_key): raise NotFoundException -def _is_allowed_data(data): +def _is_allowed_data(data): # pragma: no cover # not exhaustive. python_version = sys.version_info.major if python_version < 3 and isinstance(data, unicode): diff --git a/tests/test_stores.py b/tests/test_stores.py index 37a709d..0332c6b 100644 --- a/tests/test_stores.py +++ b/tests/test_stores.py @@ -2,7 +2,7 @@ import unittest import tempdir from augeias.stores.CephStore import CephStore -from augeias.stores.PairTreeFileSystemStore import PairTreeFileSystemStore +from augeias.stores.PairTreeFileSystemStore import PairTreeFileSystemStore, _is_allowed_data, _validate_data from augeias.stores.error import NotFoundException @@ -105,6 +105,13 @@ def test_delete_nonexisting_container(self): error_raised = True self.assertTrue(error_raised) + def test_is_allowed_data(self): + self.assertFalse(_is_allowed_data(u'foo')) + self.assertTrue(_is_allowed_data(b'data')) + + def test_validate_data(self): + self.assertRaises(IOError, _validate_data, u'foo') + class TestCephStore(unittest.TestCase): '''series of tests to check the implementation of the CephStore. From d36c3b551653ed5fed3063793788f47bd5c35620 Mon Sep 17 00:00:00 2001 From: cecemel Date: Tue, 24 Oct 2017 09:53:08 +0200 Subject: [PATCH 15/18] updated history.rst and setup.py --- HISTORY.rst | 5 +++++ setup.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/HISTORY.rst b/HISTORY.rst index 08bb050..b72656a 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,3 +1,8 @@ +0.4.0 (24-10-2017) +------------------ + +- Added python 3 compatibility + 0.3.1 (12-10-2017) ------------------ diff --git a/setup.py b/setup.py index b653f97..c145303 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ ] setup(name='augeias', - version='0.3.1', + version='0.4.0', description='Augeias. Stores your files.', long_description=README + '\n\n' + HISTORY, classifiers=[ From 76297835b73db837fd8ea4071def503eed52dd98 Mon Sep 17 00:00:00 2001 From: cecemel Date: Thu, 26 Oct 2017 09:25:32 +0200 Subject: [PATCH 16/18] update pairtree to official release --- requirements.txt | 3 +-- setup.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 51727d7..6710014 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,8 +3,7 @@ pyramid==1.8 pyramid_rewrite==0.2 # pairtree -git+https://github.com/benosteen/pairtree.git@56a5ffdf258c30a3ce210868a2ea1258d779509e#egg=pairtree -#pairtree==0.7.1-T +pairtree==0.8 python-magic==0.4.13 venusian==1.0 diff --git a/setup.py b/setup.py index c145303..5f61929 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ requires = [ 'pyramid', - 'pairtree', + 'pairtree==0.8', 'python-magic', 'pyramid_rewrite' ] From aff14edafa2e0a36d5f3f8f4e659b7827ae3b602 Mon Sep 17 00:00:00 2001 From: cecemel Date: Thu, 26 Oct 2017 09:26:41 +0200 Subject: [PATCH 17/18] update versions --- HISTORY.rst | 5 +++++ setup.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/HISTORY.rst b/HISTORY.rst index b72656a..b754cda 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,3 +1,8 @@ +0.4.1 (26-10-2017) +------------------ + +- pairtree update to 0.8 + 0.4.0 (24-10-2017) ------------------ diff --git a/setup.py b/setup.py index 5f61929..875821e 100644 --- a/setup.py +++ b/setup.py @@ -16,7 +16,7 @@ ] setup(name='augeias', - version='0.4.0', + version='0.4.1', description='Augeias. Stores your files.', long_description=README + '\n\n' + HISTORY, classifiers=[ From aea5b41c39a732b737c37069ab3389d1652e8f96 Mon Sep 17 00:00:00 2001 From: cecemel Date: Thu, 26 Oct 2017 15:04:41 +0200 Subject: [PATCH 18/18] update to working version of pairtree (0.8.1) --- HISTORY.rst | 2 +- requirements.txt | 3 ++- setup.py | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index b754cda..cfc2c3a 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,7 +1,7 @@ 0.4.1 (26-10-2017) ------------------ -- pairtree update to 0.8 +- pairtree update to 0.8.1 0.4.0 (24-10-2017) ------------------ diff --git a/requirements.txt b/requirements.txt index 6710014..b4f61fd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,8 @@ pyramid==1.8 pyramid_rewrite==0.2 # pairtree -pairtree==0.8 +ez_setup==0.9 +pairtree==0.8.1 python-magic==0.4.13 venusian==1.0 diff --git a/setup.py b/setup.py index 875821e..61d5dea 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,8 @@ requires = [ 'pyramid', - 'pairtree==0.8', + 'ez_setup==0.9', + 'pairtree==0.8.1', 'python-magic', 'pyramid_rewrite' ]