Mercurial > repos > shellac > guppy_basecaller
view env/lib/python3.7/site-packages/bagit-1.7.0-py3.7.egg-info/PKG-INFO @ 3:758bc20232e8 draft
"planemo upload commit 2a0fe2cc28b09e101d37293e53e82f61762262ec"
author | shellac |
---|---|
date | Thu, 14 May 2020 16:20:52 -0400 |
parents | 26e78fe6e8c4 |
children |
line wrap: on
line source
Metadata-Version: 1.1 Name: bagit Version: 1.7.0 Summary: Create and validate BagIt packages Home-page: https://libraryofcongress.github.io/bagit-python/ Author: Ed Summers Author-email: ehs@pobox.com License: UNKNOWN Description: bagit-python ============ |Build Status| |Coverage Status| bagit is a Python library and command line utility for working with `BagIt <http://purl.org/net/bagit>`__ style packages. Installation ------------ bagit.py is a single-file python module that you can drop into your project as needed or you can install globally with: :: pip install bagit Python v2.7+ is required. Command Line Usage ------------------ When you install bagit you should get a command-line program called bagit.py which you can use to turn an existing directory into a bag: :: bagit.py --contact-name 'John Kunze' /directory/to/bag Finding Bagit on your system ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The ``bagit.py`` program should be available in your normal command-line window (Terminal on OS X, Command Prompt or Powershell on Windows, etc.). If you are unsure where it was installed you can also request that Python search for ``bagit`` as a Python module: simply replace ``bagit.py`` with ``python -m bagit``: :: python -m bagit --help On some systems Python may have been installed as ``python3``, ``py``, etc. – simply use the same name you use to start an interactive Python shell: :: py -m bagit --help python3 -m bagit --help Configuring BagIt ~~~~~~~~~~~~~~~~~ You can pass in key/value metadata for the bag using options like ``--contact-name`` above, which get persisted to the bag-info.txt. For a complete list of bag-info.txt properties you can use as commmand line arguments see ``--help``. Since calculating checksums can take a while when creating a bag, you may want to calculate them in parallel if you are on a multicore machine. You can do that with the ``--processes`` option: :: bagit.py --processes 4 /directory/to/bag To specify which checksum algorithm(s) to use when generating the manifest, use the --md5, --sha1, --sha256 and/or --sha512 flags (MD5 is generated by default). :: bagit.py --sha1 /path/to/bag bagit.py --sha256 /path/to/bag bagit.py --sha512 /path/to/bag If you would like to validate a bag you can use the --validate flag. :: bagit.py --validate /path/to/bag If you would like to take a quick look at the bag to see if it seems valid by just examining the structure of the bag, and comparing its payload-oxum (byte count and number of files) then use the ``--fast`` flag. :: bagit.py --validate --fast /path/to/bag And finally, if you'd like to parallelize validation to take advantage of multiple CPUs you can: :: bagit.py --validate --processes 4 /path/to/bag Using BagIt in your programs ---------------------------- You can also use BagIt programatically in your own Python programs by importing the ``bagit`` module. Create ~~~~~~ To create a bag you would do this: .. code:: python bag = bagit.make_bag('mydir', {'Contact-Name': 'John Kunze'}) ``make_bag`` returns a Bag instance. If you have a bag already on disk and would like to create a Bag instance for it, simply call the constructor directly: .. code:: python bag = bagit.Bag('/path/to/bag') Update Bag Metadata ~~~~~~~~~~~~~~~~~~~ You can change the metadata persisted to the bag-info.txt by using the ``info`` property on a ``Bag``. .. code:: python # load the bag bag = bagit.Bag('/path/to/bag') # update bag info metadata bag.info['Internal-Sender-Description'] = 'Updated on 2014-06-28.' bag.info['Authors'] = ['John Kunze', 'Andy Boyko'] bag.save() Update Bag Manifests ~~~~~~~~~~~~~~~~~~~~ By default ``save`` will not update manifests. This guards against a situation where a call to ``save`` to persist bag metadata accidentally regenerates manifests for an invalid bag. If you have modified the payload of a bag by adding, modifying or deleting files in the data directory, and wish to regenerate the manifests set the ``manifests`` parameter to True when calling ``save``. .. code:: python import shutil, os # add a file shutil.copyfile('newfile', '/path/to/bag/data/newfile') # remove a file os.remove('/path/to/bag/data/file') # persist changes bag.save(manifests=True) The save method takes an optional processes parameter which will determine how many processes are used to regenerate the checksums. This can be handy on multicore machines. Validation ~~~~~~~~~~ If you would like to see if a bag is valid, use its ``is_valid`` method: .. code:: python bag = bagit.Bag('/path/to/bag') if bag.is_valid(): print("yay :)") else: print("boo :(") If you'd like to get a detailed list of validation errors, execute the ``validate`` method and catch the ``BagValidationError`` exception. If the bag's manifest was invalid (and it wasn't caught by the payload oxum) the exception's ``details`` property will contain a list of ``ManifestError``\ s that you can introspect on. Each ManifestError, will be of type ``ChecksumMismatch``, ``FileMissing``, ``UnexpectedFile``. So for example if you want to print out checksums that failed to validate you can do this: .. code:: python bag = bagit.Bag("/path/to/bag") try: bag.validate() except bagit.BagValidationError as e: for d in e.details: if isinstance(d, bagit.ChecksumMismatch): print("expected %s to have %s checksum of %s but found %s" % (d.path, d.algorithm, d.expected, d.found)) To iterate through a bag's manifest and retrieve checksums for the payload files use the bag's entries dictionary: .. code:: python bag = bagit.Bag("/path/to/bag") for path, fixity in bag.entries.items(): print("path:%s md5:%s" % (path, fixity["md5"])) Contributing to bagit-python development ---------------------------------------- :: % git clone git://github.com/LibraryOfCongress/bagit-python.git % cd bagit-python # MAKE CHANGES % python test.py Running the tests ~~~~~~~~~~~~~~~~~ You can quickly run the tests by having setuptools install dependencies: :: python setup.py test Once your code is working, you can use `Tox <https://tox.readthedocs.io/>`__ to run the tests with every supported version of Python which you have installed on the local system: :: tox If you have Docker installed, you can run the tests under Linux inside a container: :: % docker build -t bagit:latest . && docker run -it bagit:latest Benchmarks ---------- If you'd like to see how increasing parallelization of bag creation on your system effects the time to create a bag try using the included bench utility: :: % ./bench.py License ------- |cc0| Note: By contributing to this project, you agree to license your work under the same terms as those that govern this project's distribution. .. |Build Status| image:: https://travis-ci.org/LibraryOfCongress/bagit-python.svg?branch=master :target: http://travis-ci.org/LibraryOfCongress/bagit-python .. |Coverage Status| image:: https://coveralls.io/repos/github/LibraryOfCongress/bagit-python/badge.svg?branch=master :target: https://coveralls.io/github/LibraryOfCongress/bagit-python?branch=master .. |cc0| image:: http://i.creativecommons.org/p/zero/1.0/88x31.png :target: http://creativecommons.org/publicdomain/zero/1.0/ Platform: POSIX Classifier: License :: Public Domain Classifier: Intended Audience :: Developers Classifier: Topic :: Communications :: File Sharing Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: System :: Filesystems Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3.1 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6