Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/bagit-1.8.1.dist-info/METADATA @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 Metadata-Version: 2.1 | |
2 Name: bagit | |
3 Version: 1.8.1 | |
4 Summary: Create and validate BagIt packages | |
5 Home-page: https://libraryofcongress.github.io/bagit-python/ | |
6 Author: Ed Summers | |
7 Author-email: ehs@pobox.com | |
8 License: UNKNOWN | |
9 Platform: POSIX | |
10 Classifier: License :: Public Domain | |
11 Classifier: Intended Audience :: Developers | |
12 Classifier: Topic :: Communications :: File Sharing | |
13 Classifier: Topic :: Software Development :: Libraries :: Python Modules | |
14 Classifier: Topic :: System :: Filesystems | |
15 Classifier: Programming Language :: Python :: 2 | |
16 Classifier: Programming Language :: Python :: 2.7 | |
17 Classifier: Programming Language :: Python :: 3 | |
18 Classifier: Programming Language :: Python :: 3.1 | |
19 Classifier: Programming Language :: Python :: 3.2 | |
20 Classifier: Programming Language :: Python :: 3.3 | |
21 Classifier: Programming Language :: Python :: 3.4 | |
22 Classifier: Programming Language :: Python :: 3.5 | |
23 Classifier: Programming Language :: Python :: 3.6 | |
24 Classifier: Programming Language :: Python :: 3.7 | |
25 Classifier: Programming Language :: Python :: 3.8 | |
26 | |
27 bagit-python | |
28 ============ | |
29 | |
30 |Build Status| |Coverage Status| | |
31 | |
32 bagit is a Python library and command line utility for working with | |
33 `BagIt <http://purl.org/net/bagit>`__ style packages. | |
34 | |
35 Installation | |
36 ------------ | |
37 | |
38 bagit.py is a single-file python module that you can drop into your | |
39 project as needed or you can install globally with: | |
40 | |
41 :: | |
42 | |
43 pip install bagit | |
44 | |
45 Python v2.7+ is required. | |
46 | |
47 Command Line Usage | |
48 ------------------ | |
49 | |
50 When you install bagit you should get a command-line program called | |
51 bagit.py which you can use to turn an existing directory into a bag: | |
52 | |
53 :: | |
54 | |
55 bagit.py --contact-name 'John Kunze' /directory/to/bag | |
56 | |
57 Finding Bagit on your system | |
58 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
59 | |
60 The ``bagit.py`` program should be available in your normal command-line | |
61 window (Terminal on OS X, Command Prompt or Powershell on Windows, | |
62 etc.). If you are unsure where it was installed you can also request | |
63 that Python search for ``bagit`` as a Python module: simply replace | |
64 ``bagit.py`` with ``python -m bagit``: | |
65 | |
66 :: | |
67 | |
68 python -m bagit --help | |
69 | |
70 On some systems Python may have been installed as ``python3``, ``py``, | |
71 etc. – simply use the same name you use to start an interactive Python | |
72 shell: | |
73 | |
74 :: | |
75 | |
76 py -m bagit --help | |
77 python3 -m bagit --help | |
78 | |
79 Configuring BagIt | |
80 ~~~~~~~~~~~~~~~~~ | |
81 | |
82 You can pass in key/value metadata for the bag using options like | |
83 ``--contact-name`` above, which get persisted to the bag-info.txt. For a | |
84 complete list of bag-info.txt properties you can use as commmand line | |
85 arguments see ``--help``. | |
86 | |
87 Since calculating checksums can take a while when creating a bag, you | |
88 may want to calculate them in parallel if you are on a multicore | |
89 machine. You can do that with the ``--processes`` option: | |
90 | |
91 :: | |
92 | |
93 bagit.py --processes 4 /directory/to/bag | |
94 | |
95 To specify which checksum algorithm(s) to use when generating the | |
96 manifest, use the --md5, --sha1, --sha256 and/or --sha512 flags (MD5 is | |
97 generated by default). | |
98 | |
99 :: | |
100 | |
101 bagit.py --sha1 /path/to/bag | |
102 bagit.py --sha256 /path/to/bag | |
103 bagit.py --sha512 /path/to/bag | |
104 | |
105 If you would like to validate a bag you can use the --validate flag. | |
106 | |
107 :: | |
108 | |
109 bagit.py --validate /path/to/bag | |
110 | |
111 If you would like to take a quick look at the bag to see if it seems | |
112 valid by just examining the structure of the bag, and comparing its | |
113 payload-oxum (byte count and number of files) then use the ``--fast`` | |
114 flag. | |
115 | |
116 :: | |
117 | |
118 bagit.py --validate --fast /path/to/bag | |
119 | |
120 And finally, if you'd like to parallelize validation to take advantage | |
121 of multiple CPUs you can: | |
122 | |
123 :: | |
124 | |
125 bagit.py --validate --processes 4 /path/to/bag | |
126 | |
127 Using BagIt in your programs | |
128 ---------------------------- | |
129 | |
130 You can also use BagIt programatically in your own Python programs by | |
131 importing the ``bagit`` module. | |
132 | |
133 Create | |
134 ~~~~~~ | |
135 | |
136 To create a bag you would do this: | |
137 | |
138 .. code:: python | |
139 | |
140 bag = bagit.make_bag('mydir', {'Contact-Name': 'John Kunze'}) | |
141 | |
142 ``make_bag`` returns a Bag instance. If you have a bag already on disk | |
143 and would like to create a Bag instance for it, simply call the | |
144 constructor directly: | |
145 | |
146 .. code:: python | |
147 | |
148 bag = bagit.Bag('/path/to/bag') | |
149 | |
150 Update Bag Metadata | |
151 ~~~~~~~~~~~~~~~~~~~ | |
152 | |
153 You can change the metadata persisted to the bag-info.txt by using the | |
154 ``info`` property on a ``Bag``. | |
155 | |
156 .. code:: python | |
157 | |
158 # load the bag | |
159 bag = bagit.Bag('/path/to/bag') | |
160 | |
161 # update bag info metadata | |
162 bag.info['Internal-Sender-Description'] = 'Updated on 2014-06-28.' | |
163 bag.info['Authors'] = ['John Kunze', 'Andy Boyko'] | |
164 bag.save() | |
165 | |
166 Update Bag Manifests | |
167 ~~~~~~~~~~~~~~~~~~~~ | |
168 | |
169 By default ``save`` will not update manifests. This guards against a | |
170 situation where a call to ``save`` to persist bag metadata accidentally | |
171 regenerates manifests for an invalid bag. If you have modified the | |
172 payload of a bag by adding, modifying or deleting files in the data | |
173 directory, and wish to regenerate the manifests set the ``manifests`` | |
174 parameter to True when calling ``save``. | |
175 | |
176 .. code:: python | |
177 | |
178 | |
179 import shutil, os | |
180 | |
181 # add a file | |
182 shutil.copyfile('newfile', '/path/to/bag/data/newfile') | |
183 | |
184 # remove a file | |
185 os.remove('/path/to/bag/data/file') | |
186 | |
187 # persist changes | |
188 bag.save(manifests=True) | |
189 | |
190 The save method takes an optional processes parameter which will | |
191 determine how many processes are used to regenerate the checksums. This | |
192 can be handy on multicore machines. | |
193 | |
194 Validation | |
195 ~~~~~~~~~~ | |
196 | |
197 If you would like to see if a bag is valid, use its ``is_valid`` method: | |
198 | |
199 .. code:: python | |
200 | |
201 bag = bagit.Bag('/path/to/bag') | |
202 if bag.is_valid(): | |
203 print("yay :)") | |
204 else: | |
205 print("boo :(") | |
206 | |
207 If you'd like to get a detailed list of validation errors, execute the | |
208 ``validate`` method and catch the ``BagValidationError`` exception. If | |
209 the bag's manifest was invalid (and it wasn't caught by the payload | |
210 oxum) the exception's ``details`` property will contain a list of | |
211 ``ManifestError``\ s that you can introspect on. Each ManifestError, | |
212 will be of type ``ChecksumMismatch``, ``FileMissing``, | |
213 ``UnexpectedFile``. | |
214 | |
215 So for example if you want to print out checksums that failed to | |
216 validate you can do this: | |
217 | |
218 .. code:: python | |
219 | |
220 | |
221 bag = bagit.Bag("/path/to/bag") | |
222 | |
223 try: | |
224 bag.validate() | |
225 | |
226 except bagit.BagValidationError as e: | |
227 for d in e.details: | |
228 if isinstance(d, bagit.ChecksumMismatch): | |
229 print("expected %s to have %s checksum of %s but found %s" % | |
230 (d.path, d.algorithm, d.expected, d.found)) | |
231 | |
232 To iterate through a bag's manifest and retrieve checksums for the | |
233 payload files use the bag's entries dictionary: | |
234 | |
235 .. code:: python | |
236 | |
237 bag = bagit.Bag("/path/to/bag") | |
238 | |
239 for path, fixity in bag.entries.items(): | |
240 print("path:%s md5:%s" % (path, fixity["md5"])) | |
241 | |
242 Contributing to bagit-python development | |
243 ---------------------------------------- | |
244 | |
245 :: | |
246 | |
247 % git clone git://github.com/LibraryOfCongress/bagit-python.git | |
248 % cd bagit-python | |
249 # MAKE CHANGES | |
250 % python test.py | |
251 | |
252 Running the tests | |
253 ~~~~~~~~~~~~~~~~~ | |
254 | |
255 You can quickly run the tests by having setuptools install dependencies: | |
256 | |
257 :: | |
258 | |
259 python setup.py test | |
260 | |
261 Once your code is working, you can use | |
262 `Tox <https://tox.readthedocs.io/>`__ to run the tests with every | |
263 supported version of Python which you have installed on the local | |
264 system: | |
265 | |
266 :: | |
267 | |
268 tox | |
269 | |
270 If you have Docker installed, you can run the tests under Linux inside a | |
271 container: | |
272 | |
273 :: | |
274 | |
275 % docker build -t bagit:latest . && docker run -it bagit:latest | |
276 | |
277 Benchmarks | |
278 ---------- | |
279 | |
280 If you'd like to see how increasing parallelization of bag creation on | |
281 your system effects the time to create a bag try using the included | |
282 bench utility: | |
283 | |
284 :: | |
285 | |
286 % ./bench.py | |
287 | |
288 License | |
289 ------- | |
290 | |
291 |cc0| | |
292 | |
293 Note: By contributing to this project, you agree to license your work | |
294 under the same terms as those that govern this project's distribution. | |
295 | |
296 .. |Build Status| image:: https://travis-ci.org/LibraryOfCongress/bagit-python.svg?branch=master | |
297 :target: http://travis-ci.org/LibraryOfCongress/bagit-python | |
298 .. |Coverage Status| image:: https://coveralls.io/repos/github/LibraryOfCongress/bagit-python/badge.svg?branch=master | |
299 :target: https://coveralls.io/github/LibraryOfCongress/bagit-python?branch=master | |
300 .. |cc0| image:: http://i.creativecommons.org/p/zero/1.0/88x31.png | |
301 :target: http://creativecommons.org/publicdomain/zero/1.0/ | |
302 | |
303 |