Metadata-Version: 2.1
Name: aarc_entitlement
Version: 1.0.5
Summary: Create, parse and compare entitlements as specified by the AARC recommendations G002 and G069
Home-page: UNKNOWN
Author: Marcus Hardt
Author-email: hardt@kit.edu
License: MIT
Project-URL: Source Code, https://github.com/KIT-SCC/AarcEntitlement
Project-URL: Bug Tracker, https://github.com/KIT-SCC/AarcEntitlement/issues
Project-URL: Documentation, https://aarcentitlement.readthedocs.io
Project-URL: G002 Recommendation, https://aarc-community.org/guidelines/aarc-g002
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: System :: Systems Administration :: Authentication/Directory
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Description-Content-Type: text/x-rst; charset=UTF-8
License-File: LICENSE

AARC Entitlement Library
========================

This package provides python classes to create, parse and compare entitlements according
to the AARC recommendations G002 and G069.

Installation
------------
Install using pip::

    pip install aarc-entitlement

Documentation
-------------
The documentation is available at https://aarcentitlement.readthedocs.io.

The G002 recommendation can be found at https://aarc-community.org/guidelines/aarc-g002.

Examples
---------

Check if a user entitlement permits usage of a service
______________________________________________________
.. code-block:: python

    import aarc_entitlement

    # This entitlement is needed to use a service
    required = aarc_entitlement.G002("urn:geant:h-df.de:group:aai-admin")

    # This entitlement is held by a user who wants to use the service
    actual =   aarc_entitlement.G002("urn:geant:h-df.de:group:aai-admin:role=member")

    # Is the user permitted to use the service, because of its entitlement `actual`?
    permitted = actual.satisfies(required)
    # -> True here

    # Are the two entitlements the same?
    equals = required == actual
    # -> False here

..
    does not work on github:
    Other examples for entitlements and comparisions can be found in :download:`examples.py <../../examples.py>`

G069 Entitlement Normalization
______________________________
Starting with recommendation G069 the specification requires normalization of entitlements.
When using `AarcEntitlementG069` the library produces normalized representations.

.. code-block:: python

    import aarc_entitlement

    not_normalized = "UrN:NiD:ExAmPlE.oRg:group:Minun%20Ryhm%c3%a4ni"

    normalized = repr(aarc_entitlement.G069(not_normalized))
    # -> "urn:nid:example.org:group:Minun%20Ryhm%C3%A4ni"

Tests, Linting and Documentation
--------------------------------
Run tests for all supported python versions::

    # run tests, coverage and linter
    tox

    # build docs
    tox -e docs

    # After this, the documentation should be located at `doc/build/index.html`.


Packaging
---------
To upload a new package version to pypi use the Makefile::

    # build the package
    make dist

    # upload the package to pypi
    make upload


Funding Notice
--------------
The AARC project has received funding from the European Union’s Horizon 2020
research and innovation programme under grant agreement No 653965 and 730941.



