Changeset View
Changeset View
Standalone View
Standalone View
swh/model/tests/test_identifiers.py
# Copyright (C) 2015-2018 The Software Heritage developers | # Copyright (C) 2015-2018 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU General Public License version 3, or any later version | # License: GNU General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
import binascii | import binascii | ||||
import datetime | import datetime | ||||
import unittest | import unittest | ||||
from swh.model import hashutil, identifiers | from swh.model import hashutil, identifiers | ||||
from swh.model.exceptions import ValidationError | from swh.model.exceptions import ValidationError | ||||
from swh.model.hashutil import hash_to_bytes | from swh.model.hashutil import hash_to_bytes as _x | ||||
from swh.model.identifiers import (CONTENT, DIRECTORY, | from swh.model.identifiers import (CONTENT, DIRECTORY, | ||||
RELEASE, REVISION, | RELEASE, REVISION, | ||||
SNAPSHOT, PersistentId) | SNAPSHOT, PersistentId) | ||||
class UtilityFunctionsIdentifier(unittest.TestCase): | class UtilityFunctionsIdentifier(unittest.TestCase): | ||||
def setUp(self): | def setUp(self): | ||||
self.str_id = 'c2e41aae41ac17bd4a650770d6ee77f62e52235b' | self.str_id = 'c2e41aae41ac17bd4a650770d6ee77f62e52235b' | ||||
▲ Show 20 Lines • Show All 93 Lines • ▼ Show 20 Lines | |||||
directory_example = { | directory_example = { | ||||
'id': 'd7ed3d2c31d608823be58b1cbe57605310615231', | 'id': 'd7ed3d2c31d608823be58b1cbe57605310615231', | ||||
'entries': [ | 'entries': [ | ||||
{ | { | ||||
'type': 'file', | 'type': 'file', | ||||
'perms': 33188, | 'perms': 33188, | ||||
'name': b'README', | 'name': b'README', | ||||
'target': '37ec8ea2110c0b7a32fbb0e872f6e7debbf95e21' | 'target': _x('37ec8ea2110c0b7a32fbb0e872f6e7debbf95e21') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'file', | 'type': 'file', | ||||
'perms': 33188, | 'perms': 33188, | ||||
'name': b'Rakefile', | 'name': b'Rakefile', | ||||
'target': '3bb0e8592a41ae3185ee32266c860714980dbed7' | 'target': _x('3bb0e8592a41ae3185ee32266c860714980dbed7') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'app', | 'name': b'app', | ||||
'target': '61e6e867f5d7ba3b40540869bc050b0c4fed9e95' | 'target': _x('61e6e867f5d7ba3b40540869bc050b0c4fed9e95') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'file', | 'type': 'file', | ||||
'perms': 33188, | 'perms': 33188, | ||||
'name': b'1.megabyte', | 'name': b'1.megabyte', | ||||
'target': '7c2b2fbdd57d6765cdc9d84c2d7d333f11be7fb3' | 'target': _x('7c2b2fbdd57d6765cdc9d84c2d7d333f11be7fb3') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'config', | 'name': b'config', | ||||
'target': '591dfe784a2e9ccc63aaba1cb68a765734310d98' | 'target': _x('591dfe784a2e9ccc63aaba1cb68a765734310d98') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'public', | 'name': b'public', | ||||
'target': '9588bf4522c2b4648bfd1c61d175d1f88c1ad4a5' | 'target': _x('9588bf4522c2b4648bfd1c61d175d1f88c1ad4a5') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'file', | 'type': 'file', | ||||
'perms': 33188, | 'perms': 33188, | ||||
'name': b'development.sqlite3', | 'name': b'development.sqlite3', | ||||
'target': 'e69de29bb2d1d6434b8b29ae775ad8c2e48c5391' | 'target': _x('e69de29bb2d1d6434b8b29ae775ad8c2e48c5391') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'doc', | 'name': b'doc', | ||||
'target': '154705c6aa1c8ead8c99c7915373e3c44012057f' | 'target': _x('154705c6aa1c8ead8c99c7915373e3c44012057f') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'db', | 'name': b'db', | ||||
'target': '85f157bdc39356b7bc7de9d0099b4ced8b3b382c' | 'target': _x('85f157bdc39356b7bc7de9d0099b4ced8b3b382c') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'log', | 'name': b'log', | ||||
'target': '5e3d3941c51cce73352dff89c805a304ba96fffe' | 'target': _x('5e3d3941c51cce73352dff89c805a304ba96fffe') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'script', | 'name': b'script', | ||||
'target': '1b278423caf176da3f3533592012502aa10f566c' | 'target': _x('1b278423caf176da3f3533592012502aa10f566c') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'test', | 'name': b'test', | ||||
'target': '035f0437c080bfd8711670b3e8677e686c69c763' | 'target': _x('035f0437c080bfd8711670b3e8677e686c69c763') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'vendor', | 'name': b'vendor', | ||||
'target': '7c0dc9ad978c1af3f9a4ce061e50f5918bd27138' | 'target': _x('7c0dc9ad978c1af3f9a4ce061e50f5918bd27138') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'rev', | 'type': 'rev', | ||||
'perms': 57344, | 'perms': 57344, | ||||
'name': b'will_paginate', | 'name': b'will_paginate', | ||||
'target': '3d531e169db92a16a9a8974f0ae6edf52e52659e' | 'target': _x('3d531e169db92a16a9a8974f0ae6edf52e52659e') | ||||
}, | }, | ||||
# in git order, the dir named "order" should be between the files | # in git order, the dir named "order" should be between the files | ||||
# named "order." and "order0" | # named "order." and "order0" | ||||
{ | { | ||||
'type': 'dir', | 'type': 'dir', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'order', | 'name': b'order', | ||||
'target': '62cdb7020ff920e5aa642c3d4066950dd1f01f4d' | 'target': _x('62cdb7020ff920e5aa642c3d4066950dd1f01f4d') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'file', | 'type': 'file', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'order.', | 'name': b'order.', | ||||
'target': '0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33' | 'target': _x('0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33') | ||||
}, | }, | ||||
{ | { | ||||
'type': 'file', | 'type': 'file', | ||||
'perms': 16384, | 'perms': 16384, | ||||
'name': b'order0', | 'name': b'order0', | ||||
'target': 'bbe960a25ea311d21d40669e93df2003ba9b90a2' | 'target': _x('bbe960a25ea311d21d40669e93df2003ba9b90a2') | ||||
}, | }, | ||||
], | ], | ||||
} | } | ||||
class DirectoryIdentifier(unittest.TestCase): | class DirectoryIdentifier(unittest.TestCase): | ||||
def setUp(self): | def setUp(self): | ||||
self.directory = directory_example | self.directory = directory_example | ||||
Show All 20 Lines | def test_dir_identifier_empty_directory(self): | ||||
identifiers.directory_identifier(self.empty_directory), | identifiers.directory_identifier(self.empty_directory), | ||||
self.empty_directory['id']) | self.empty_directory['id']) | ||||
linus_tz = datetime.timezone(datetime.timedelta(minutes=-420)) | linus_tz = datetime.timezone(datetime.timedelta(minutes=-420)) | ||||
revision_example = { | revision_example = { | ||||
'id': 'bc0195aad0daa2ad5b0d76cce22b167bc3435590', | 'id': 'bc0195aad0daa2ad5b0d76cce22b167bc3435590', | ||||
'directory': '85a74718d377195e1efd0843ba4f3260bad4fe07', | 'directory': _x('85a74718d377195e1efd0843ba4f3260bad4fe07'), | ||||
'parents': ['01e2d0627a9a6edb24c37db45db5ecb31e9de808'], | 'parents': [_x('01e2d0627a9a6edb24c37db45db5ecb31e9de808')], | ||||
'author': { | 'author': { | ||||
'name': b'Linus Torvalds', | 'name': b'Linus Torvalds', | ||||
'email': b'torvalds@linux-foundation.org', | 'email': b'torvalds@linux-foundation.org', | ||||
'fullname': b'Linus Torvalds <torvalds@linux-foundation.org>' | 'fullname': b'Linus Torvalds <torvalds@linux-foundation.org>' | ||||
}, | }, | ||||
'date': datetime.datetime(2015, 7, 12, 15, 10, 30, | 'date': datetime.datetime(2015, 7, 12, 15, 10, 30, | ||||
tzinfo=linus_tz), | tzinfo=linus_tz), | ||||
'committer': { | 'committer': { | ||||
Show All 29 Lines | |||||
dg1KdHOa34shrKDaOVzW | dg1KdHOa34shrKDaOVzW | ||||
=od6m | =od6m | ||||
-----END PGP SIGNATURE-----''' | -----END PGP SIGNATURE-----''' | ||||
self.revision = revision_example | self.revision = revision_example | ||||
self.revision_none_metadata = { | self.revision_none_metadata = { | ||||
'id': 'bc0195aad0daa2ad5b0d76cce22b167bc3435590', | 'id': 'bc0195aad0daa2ad5b0d76cce22b167bc3435590', | ||||
'directory': '85a74718d377195e1efd0843ba4f3260bad4fe07', | 'directory': _x('85a74718d377195e1efd0843ba4f3260bad4fe07'), | ||||
'parents': ['01e2d0627a9a6edb24c37db45db5ecb31e9de808'], | 'parents': [_x('01e2d0627a9a6edb24c37db45db5ecb31e9de808')], | ||||
'author': { | 'author': { | ||||
'name': b'Linus Torvalds', | 'name': b'Linus Torvalds', | ||||
'email': b'torvalds@linux-foundation.org', | 'email': b'torvalds@linux-foundation.org', | ||||
}, | }, | ||||
'date': datetime.datetime(2015, 7, 12, 15, 10, 30, | 'date': datetime.datetime(2015, 7, 12, 15, 10, 30, | ||||
tzinfo=linus_tz), | tzinfo=linus_tz), | ||||
'committer': { | 'committer': { | ||||
'name': b'Linus Torvalds', | 'name': b'Linus Torvalds', | ||||
Show All 36 Lines | -----END PGP SIGNATURE-----''' | ||||
'sha256': '5f835b04b5f7dd4f4d2dc96190ec1621b8d89f' | 'sha256': '5f835b04b5f7dd4f4d2dc96190ec1621b8d89f' | ||||
'2dc6f638f9f8bc1b1014ba8cad'}]}, | '2dc6f638f9f8bc1b1014ba8cad'}]}, | ||||
} | } | ||||
# cat commit.txt | git hash-object -t commit --stdin | # cat commit.txt | git hash-object -t commit --stdin | ||||
self.revision_with_extra_headers = { | self.revision_with_extra_headers = { | ||||
'id': '010d34f384fa99d047cdd5e2f41e56e5c2feee45', | 'id': '010d34f384fa99d047cdd5e2f41e56e5c2feee45', | ||||
'directory': '85a74718d377195e1efd0843ba4f3260bad4fe07', | 'directory': _x('85a74718d377195e1efd0843ba4f3260bad4fe07'), | ||||
'parents': ['01e2d0627a9a6edb24c37db45db5ecb31e9de808'], | 'parents': [_x('01e2d0627a9a6edb24c37db45db5ecb31e9de808')], | ||||
'author': { | 'author': { | ||||
'name': b'Linus Torvalds', | 'name': b'Linus Torvalds', | ||||
'email': b'torvalds@linux-foundation.org', | 'email': b'torvalds@linux-foundation.org', | ||||
'fullname': b'Linus Torvalds <torvalds@linux-foundation.org>', | 'fullname': b'Linus Torvalds <torvalds@linux-foundation.org>', | ||||
}, | }, | ||||
'date': datetime.datetime(2015, 7, 12, 15, 10, 30, | 'date': datetime.datetime(2015, 7, 12, 15, 10, 30, | ||||
tzinfo=linus_tz), | tzinfo=linus_tz), | ||||
'committer': { | 'committer': { | ||||
Show All 9 Lines | -----END PGP SIGNATURE-----''' | ||||
['svn-repo-uuid', '046f1af7-66c2-d61b-5410-ce57b7db7bff'], | ['svn-repo-uuid', '046f1af7-66c2-d61b-5410-ce57b7db7bff'], | ||||
['svn-revision', 10], | ['svn-revision', 10], | ||||
] | ] | ||||
} | } | ||||
} | } | ||||
self.revision_with_gpgsig = { | self.revision_with_gpgsig = { | ||||
'id': '44cc742a8ca17b9c279be4cc195a93a6ef7a320e', | 'id': '44cc742a8ca17b9c279be4cc195a93a6ef7a320e', | ||||
'directory': 'b134f9b7dc434f593c0bab696345548b37de0558', | 'directory': _x('b134f9b7dc434f593c0bab696345548b37de0558'), | ||||
'parents': ['689664ae944b4692724f13b709a4e4de28b54e57', | 'parents': [_x('689664ae944b4692724f13b709a4e4de28b54e57'), | ||||
'c888305e1efbaa252d01b4e5e6b778f865a97514'], | _x('c888305e1efbaa252d01b4e5e6b778f865a97514')], | ||||
'author': { | 'author': { | ||||
'name': b'Jiang Xin', | 'name': b'Jiang Xin', | ||||
'email': b'worldhello.net@gmail.com', | 'email': b'worldhello.net@gmail.com', | ||||
'fullname': b'Jiang Xin <worldhello.net@gmail.com>', | 'fullname': b'Jiang Xin <worldhello.net@gmail.com>', | ||||
}, | }, | ||||
'date': { | 'date': { | ||||
'timestamp': 1428538899, | 'timestamp': 1428538899, | ||||
'offset': 480, | 'offset': 480, | ||||
Show All 15 Lines | |||||
* 'master' of git://github.com/alexhenrie/git-po: | * 'master' of git://github.com/alexhenrie/git-po: | ||||
l10n: ca.po: update translation | l10n: ca.po: update translation | ||||
''' | ''' | ||||
} | } | ||||
self.revision_no_message = { | self.revision_no_message = { | ||||
'id': '4cfc623c9238fa92c832beed000ce2d003fd8333', | 'id': '4cfc623c9238fa92c832beed000ce2d003fd8333', | ||||
'directory': 'b134f9b7dc434f593c0bab696345548b37de0558', | 'directory': _x('b134f9b7dc434f593c0bab696345548b37de0558'), | ||||
'parents': ['689664ae944b4692724f13b709a4e4de28b54e57', | 'parents': [_x('689664ae944b4692724f13b709a4e4de28b54e57'), | ||||
'c888305e1efbaa252d01b4e5e6b778f865a97514'], | _x('c888305e1efbaa252d01b4e5e6b778f865a97514')], | ||||
'author': { | 'author': { | ||||
'name': b'Jiang Xin', | 'name': b'Jiang Xin', | ||||
'email': b'worldhello.net@gmail.com', | 'email': b'worldhello.net@gmail.com', | ||||
'fullname': b'Jiang Xin <worldhello.net@gmail.com>', | 'fullname': b'Jiang Xin <worldhello.net@gmail.com>', | ||||
}, | }, | ||||
'date': { | 'date': { | ||||
'timestamp': 1428538899, | 'timestamp': 1428538899, | ||||
'offset': 480, | 'offset': 480, | ||||
}, | }, | ||||
'committer': { | 'committer': { | ||||
'name': b'Jiang Xin', | 'name': b'Jiang Xin', | ||||
'email': b'worldhello.net@gmail.com', | 'email': b'worldhello.net@gmail.com', | ||||
}, | }, | ||||
'committer_date': { | 'committer_date': { | ||||
'timestamp': 1428538899, | 'timestamp': 1428538899, | ||||
'offset': 480, | 'offset': 480, | ||||
}, | }, | ||||
'message': None, | 'message': None, | ||||
} | } | ||||
self.revision_empty_message = { | self.revision_empty_message = { | ||||
'id': '7442cd78bd3b4966921d6a7f7447417b7acb15eb', | 'id': '7442cd78bd3b4966921d6a7f7447417b7acb15eb', | ||||
'directory': 'b134f9b7dc434f593c0bab696345548b37de0558', | 'directory': _x('b134f9b7dc434f593c0bab696345548b37de0558'), | ||||
'parents': ['689664ae944b4692724f13b709a4e4de28b54e57', | 'parents': [_x('689664ae944b4692724f13b709a4e4de28b54e57'), | ||||
'c888305e1efbaa252d01b4e5e6b778f865a97514'], | _x('c888305e1efbaa252d01b4e5e6b778f865a97514')], | ||||
'author': { | 'author': { | ||||
'name': b'Jiang Xin', | 'name': b'Jiang Xin', | ||||
'email': b'worldhello.net@gmail.com', | 'email': b'worldhello.net@gmail.com', | ||||
'fullname': b'Jiang Xin <worldhello.net@gmail.com>', | 'fullname': b'Jiang Xin <worldhello.net@gmail.com>', | ||||
}, | }, | ||||
'date': { | 'date': { | ||||
'timestamp': 1428538899, | 'timestamp': 1428538899, | ||||
'offset': 480, | 'offset': 480, | ||||
}, | }, | ||||
'committer': { | 'committer': { | ||||
'name': b'Jiang Xin', | 'name': b'Jiang Xin', | ||||
'email': b'worldhello.net@gmail.com', | 'email': b'worldhello.net@gmail.com', | ||||
}, | }, | ||||
'committer_date': { | 'committer_date': { | ||||
'timestamp': 1428538899, | 'timestamp': 1428538899, | ||||
'offset': 480, | 'offset': 480, | ||||
}, | }, | ||||
'message': b'', | 'message': b'', | ||||
} | } | ||||
self.revision_only_fullname = { | self.revision_only_fullname = { | ||||
'id': '010d34f384fa99d047cdd5e2f41e56e5c2feee45', | 'id': '010d34f384fa99d047cdd5e2f41e56e5c2feee45', | ||||
'directory': '85a74718d377195e1efd0843ba4f3260bad4fe07', | 'directory': _x('85a74718d377195e1efd0843ba4f3260bad4fe07'), | ||||
'parents': ['01e2d0627a9a6edb24c37db45db5ecb31e9de808'], | 'parents': [_x('01e2d0627a9a6edb24c37db45db5ecb31e9de808')], | ||||
'author': { | 'author': { | ||||
'fullname': b'Linus Torvalds <torvalds@linux-foundation.org>', | 'fullname': b'Linus Torvalds <torvalds@linux-foundation.org>', | ||||
}, | }, | ||||
'date': datetime.datetime(2015, 7, 12, 15, 10, 30, | 'date': datetime.datetime(2015, 7, 12, 15, 10, 30, | ||||
tzinfo=linus_tz), | tzinfo=linus_tz), | ||||
'committer': { | 'committer': { | ||||
'fullname': b'Linus Torvalds <torvalds@linux-foundation.org>', | 'fullname': b'Linus Torvalds <torvalds@linux-foundation.org>', | ||||
}, | }, | ||||
▲ Show 20 Lines • Show All 231 Lines • ▼ Show 20 Lines | ''', | ||||
def test_release_identifier_snapshot_target(self): | def test_release_identifier_snapshot_target(self): | ||||
self.assertEqual( | self.assertEqual( | ||||
identifiers.release_identifier(self.release_snapshot_target), | identifiers.release_identifier(self.release_snapshot_target), | ||||
identifiers.identifier_to_str(self.release_snapshot_target['id']) | identifiers.identifier_to_str(self.release_snapshot_target['id']) | ||||
) | ) | ||||
snapshot_example = { | snapshot_example = { | ||||
'id': hash_to_bytes('6e65b86363953b780d92b0a928f3e8fcdd10db36'), | 'id': _x('6e65b86363953b780d92b0a928f3e8fcdd10db36'), | ||||
'branches': { | 'branches': { | ||||
b'directory': { | b'directory': { | ||||
'target': hash_to_bytes( | 'target': _x('1bd0e65f7d2ff14ae994de17a1e7fe65111dcad8'), | ||||
'1bd0e65f7d2ff14ae994de17a1e7fe65111dcad8'), | |||||
'target_type': 'directory', | 'target_type': 'directory', | ||||
}, | }, | ||||
b'content': { | b'content': { | ||||
'target': hash_to_bytes( | 'target': _x('fe95a46679d128ff167b7c55df5d02356c5a1ae1'), | ||||
'fe95a46679d128ff167b7c55df5d02356c5a1ae1'), | |||||
'target_type': 'content', | 'target_type': 'content', | ||||
}, | }, | ||||
b'alias': { | b'alias': { | ||||
'target': b'revision', | 'target': b'revision', | ||||
'target_type': 'alias', | 'target_type': 'alias', | ||||
}, | }, | ||||
b'revision': { | b'revision': { | ||||
'target': hash_to_bytes( | 'target': _x('aafb16d69fd30ff58afdd69036a26047f3aebdc6'), | ||||
'aafb16d69fd30ff58afdd69036a26047f3aebdc6'), | |||||
'target_type': 'revision', | 'target_type': 'revision', | ||||
}, | }, | ||||
b'release': { | b'release': { | ||||
'target': hash_to_bytes( | 'target': _x('7045404f3d1c54e6473c71bbb716529fbad4be24'), | ||||
'7045404f3d1c54e6473c71bbb716529fbad4be24'), | |||||
'target_type': 'release', | 'target_type': 'release', | ||||
}, | }, | ||||
b'snapshot': { | b'snapshot': { | ||||
'target': hash_to_bytes( | 'target': _x('1a8893e6a86f444e8be8e7bda6cb34fb1735a00e'), | ||||
'1a8893e6a86f444e8be8e7bda6cb34fb1735a00e' | |||||
), | |||||
'target_type': 'snapshot', | 'target_type': 'snapshot', | ||||
}, | }, | ||||
b'dangling': None, | b'dangling': None, | ||||
} | } | ||||
} | } | ||||
class SnapshotIdentifier(unittest.TestCase): | class SnapshotIdentifier(unittest.TestCase): | ||||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | class SnapshotIdentifier(unittest.TestCase): | ||||
def test_all_types(self): | def test_all_types(self): | ||||
self.assertEqual( | self.assertEqual( | ||||
identifiers.snapshot_identifier(self.all_types), | identifiers.snapshot_identifier(self.all_types), | ||||
identifiers.identifier_to_str(self.all_types['id']), | identifiers.identifier_to_str(self.all_types['id']), | ||||
) | ) | ||||
def test_persistent_identifier(self): | def test_persistent_identifier(self): | ||||
_snapshot_id = hashutil.hash_to_bytes( | _snapshot_id = _x('c7c108084bc0bf3d81436bf980b46e98bd338453') | ||||
'c7c108084bc0bf3d81436bf980b46e98bd338453') | |||||
_release_id = '22ece559cc7cc2364edc5e5593d63ae8bd229f9f' | _release_id = '22ece559cc7cc2364edc5e5593d63ae8bd229f9f' | ||||
_revision_id = '309cf2674ee7a0749978cf8265ab91a60aea0f7d' | _revision_id = '309cf2674ee7a0749978cf8265ab91a60aea0f7d' | ||||
_directory_id = 'd198bc9d7a6bcf6db04f476d29314f157507d505' | _directory_id = 'd198bc9d7a6bcf6db04f476d29314f157507d505' | ||||
_content_id = '94a9ed024d3859793618152ea559a168bbcbb5e2' | _content_id = '94a9ed024d3859793618152ea559a168bbcbb5e2' | ||||
_snapshot = {'id': _snapshot_id} | _snapshot = {'id': _snapshot_id} | ||||
_release = {'id': _release_id} | _release = {'id': _release_id} | ||||
_revision = {'id': _revision_id} | _revision = {'id': _revision_id} | ||||
_directory = {'id': _directory_id} | _directory = {'id': _directory_id} | ||||
▲ Show 20 Lines • Show All 146 Lines • Show Last 20 Lines |