eulfedora is a Python module that provides utilities, API wrappers, and classes for interacting with the Fedora-Commons Repository in a pythonic, object-oriented way, with optional Django integration. Current versions of eulfedora are intended for use with Fedora Commons 3.7.x or 3.8.x, but will likely work with earlier versions. If you need support for an earlier version of Fedora and the latest eulfedora does not work, you may have success with the 1.0 release.
eulfedora.api provides complete access to the Fedora API, primarily making use of Fedora's REST API. This low-level interface is wrapped by eulfedora.server.Repository and eulfedora.models.DigitalObject, which provide a more abstract, object-oriented, and Pythonic way of interacting with a Fedora Repository or with individual objects and datastreams.
eulfedora.indexdata provides a webservice that returns data for fedora objects in JSON form, which can be used in conjunction with a service for updating an index, such as eulindexer.
When used with Django, eulfedora can pull the Repository connection configuration from Django settings, and provides a custom management command for loading simple content models and fixture objects to the configured repository.
eulfedora can be used without Django, but additional functionality is available when used with Django.
eulfedora was created by the Digital Programs and Systems Software Team of Emory University Libraries.
eulfedora is distributed under the Apache 2.0 License.
For instructions on how to see and interact with the full development history of eulfedora, see eulcore-history.
To install dependencies for your local check out of the code, run
eulfedora directory (the use of virtualenv is recommended):
pip install -e .
If you want to run unit tests or build sphinx documentation, you will also need to install development dependencies:
pip install -e . "eulfedora[dev]"
Running the unit tests requires a Fedora Commons repository instance. Before
running tests, you will need to copy
test/localsettings.py and edit the configuration for your test repository.
To run the tests, you should set an environment variable of
DJANGO_SETTINGS_MODULE equal to
testsettings.test or prefix
the nosetests command with
To run all unit tests:
nosetests test # for normal development nosetests test --with-coverage --cover-package=eulfedora --cover-xml --with-xunit # for continuous integration
To run unit tests for a specific module or class, use syntax like this:
nosetests test.test_fedora.test_api nosetests test.test_fedora:TestDigitalObject
To generate sphinx documentation:
cd doc make html
python setup.py sdist bdist_wheel upload
To upload new artifacts for previously published versions, use twine.