A module containing helpers and shared code related to identity systems within UIS, University of Cambridge.
Project description
Identity Lib
This Python package contains shared code related to Identity systems within UIS. It's primary purpose is to encourage code-reuse and to allow for client systems to make use of the same data structures and logic that is contained within our emergent identity APIs.
Use
Install ucam-identitylib
using pip:
pip install ucam-identitylib
The module can then be used as identitylib
:
from identitylib.identifiers import Identifier
identifier = Identifier.from_string('wgd23@v1.person.identifiers.cam.ac.uk')
print(identifier)
Developer quickstart
This project depends on poetry
& poe
:
pipx install poetry
pipx inject poetry poethepoet[poetry_plugin]
This project contains a dockerized testing environment which wraps tox.
Tests can be run using the tox
poe command:
# Run all PyTest tests and Flake8 checks
$ poetry poe tox
# Run PyTest and Flake8 and recreate test environments
$ poetry poe tox --recreate
# Run just PyTest
$ poetry poe tox -e py3
# Run a single test file within PyTest
$ poetry poe tox -e py3 -- tests/test_identifiers.py
# Run a single test file within PyTest with verbose logging
$ poetry poe tox -e py3 -- tests/test_identifiers.py -vvv
Pulling latest specs from source repositories
Local copies of the OpenAPI specs used to generate the library should be pulled in to this repo so the specific specs used in each build are under revision control. This can be done using the provided poe command:
$ poetry poe pull-specs
# If an access token required for https clones from gitlab repositories
# then this can be specified using:
$ poetry poe pull-specs --token "ACCESS_TOKEN_HERE"
# You may need to first set the $USER environment variable to match the GitLab account name.
Generating the identitylib
The identitylib is generated during the docker build process. To create a local copy of the identitylib distribution use the poe command:
$ poetry poe build-local
This will create a new folder /dist
in the current directory with the wheel and tar package for
identitylib.
Interactive testing
An interactive testing environment is provided to smoke-test any changes to the identitylib against
staging or local instances of the APIs. Note that to test local instance you will need to set the
URL in the config file to host.docker.internal:<PORT NUMBER>
on linux.
To set up the interactive testing environment, copy the scripts/api-loader-config.yaml.example
file to scripts/api-loader-config.yaml
and populate with valid API key/secret pairs for any of
the APIs you wish to test.
Run the interactive test environment against the latest test release (i.e. uploaded to
test.pypi.org
) of the library using the poe command:
$ poetry poe interactive-test
To run the interactive tests using a local copy of identitylib
from the dist
directory:
$ poetry poe interactive-test:local --source dist/ucam_identitylib-1.7.0-py3-none-any.whl
will build the interactive environment from a local wheel stored in the dist
directory.
Once the environment is active you can load up test instances and manipulate them using the python
interactive console. The LOADER
global variable contains a helper class which reads the config
file and generates clients based off it:
# Docker build output...
>>> config, client, inst = LOADER.load_card()
>>> inst.v1beta1_cards_list()
... # Output printed to the screen
Use the builtin help
command to view info on the LOADER
, and the returned api_inst
objects
that can be used to make requests.
You can view the structure of the generated identitylib
package using the get_module_structure
function:
>>> import identitylib
>>> from pprint import pprint
>>> pprint(get_module_structure(identitylib))
...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ucam_identitylib-3.3.1.tar.gz
.
File metadata
- Download URL: ucam_identitylib-3.3.1.tar.gz
- Upload date:
- Size: 228.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 629cf4aea9b8bd9e10adda47529680d91647681f7ca79ea3c2d76e1cf267730c |
|
MD5 | bbee32de2b716dd63fd02c5e7c7020b0 |
|
BLAKE2b-256 | 1e82b2ce1625e7c5f86e39a6c33c04e7b435b185e28f2ecd944a724fa81f9f77 |
File details
Details for the file ucam_identitylib-3.3.1-py3-none-any.whl
.
File metadata
- Download URL: ucam_identitylib-3.3.1-py3-none-any.whl
- Upload date:
- Size: 715.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 618c9253b98ef9685cadc7f976a32f1f6adb2df9ec2eee86426af0a4809b2041 |
|
MD5 | 1a55f6727a4b5454ea14f4433913172b |
|
BLAKE2b-256 | 1339f3f5afe5701a4655beb6ac5434e9a1cdbf7f28c70cfa448b976ec0098399 |