The hatcher.core package

hatcher.core.brood_client module

class hatcher.core.brood_client.BroodClient(url_handler, api_version=0)

Bases: object

BroodClient is the top level entry point into the hatcher API.

create_api_token(name)

Create a new API token for the current user.

Parameters:name (str) – The name for the new token.
Returns:token (dict) – Dict containing the token and its name.
create_organization(name, description)

Create a new organization called name with the description description.

Parameters:
  • name (str) – The name of the organization.
  • description (str) – The description of the organization.

Returns Organization

delete_api_token(name)

Delete the user’s named API token.

Parameters:name (str) – The name of the token to delete.
classmethod from_session(url, session, api_version=0)

Create a BroodClient from a Brood URL and pre-configured requests.Session instance.

classmethod from_url(url, auth=None, verify_ssl=True, api_version=0)

Create a BroodClient from a Brood URL and authentication information.

list_api_tokens()

List the metadata of user’s API tokens.

Note

This does not list the actual token that can be used for authentication, just the metadata name, created and last_used.

Returns:tokens (list) – List of metadata for all of the user’s active tokens.
list_available_repositories()
list_organizations()

List all organizations in the brood server.

list_platforms()

List all platforms supported by the Brood server.

Returns:platforms (list) – List of platform names.
list_python_tags(list_all=False)

List PEP425 Python Tags supported by the Brood server.

Parameters:list_all (bool) – If False (default), will only list the tags that correspond to an actual Python implementation and version. If True, list all possible tags.
Returns:tags (list) – List of Python tags.
organization(name)

Get an existing organization.

Parameters:name (str) – The name of the organization.

Returns Organization

hatcher.core.brood_url_handler module

class hatcher.core.brood_url_handler.BroodURLHandler(url, session)

Bases: object

Low level handling of the interface between the Hatcher API and the Brood API.

api_root = '/api/v0/json'
delete(path, force=False)

Issue a DELETE request for the object referenced by path.

Parameters:
  • path (str) – The resource path to use in the URL
  • force (bool) – Force deletion of the resource if it would otherwise fail.
download_file(path, destination_directory, expected_sha256, filename=None)

Download the file specified by path and save it in the destination_directory.

Parameters:
  • path (str) – The resource path to use in the URL
  • destination_directory (str) – The directory in which to save the downloaded file.
  • expected_sha256 (str) – The expected SHA256 sum of the downloaded file.
  • filename (str) – Optional name for the file being saved. If it is not provided, the filename specified in the Content-Disposition header of the response will be used.
classmethod from_auth(url, auth=None, verify_ssl=True)

Create a BroodURLHandler from authentication information.

Parameters:
  • auth (tuple) – A two-tuple of the form (username, password)
  • verify_ssl (bool) – False to disable SSL certificate verification (default on)
classmethod from_session(url, session)

Create a BroodURLHandler from a pre-configured requests.Session.

Parameters:
  • url (str) – The root URL of a brood server in the form <scheme>://<host>
  • session (requests.Session) – The configured Session to use for connected to the server.
get(path)

Issue a GET request to the given path.

Parameters:path (str) – The resource path to use in the URL
get_json(path)

Get the JOSN payload at path.

Parameters:path (str) – The resource path to use in the URL
iter_download(path, destination_directory, expected_sha256, filename=None)

Download the file specified by path and save it in the destination_directory.

This method returns a tuple of (content_length, iterator). The content_length is the total size of the download. The iterator yields the size of each chunk as it is downloaded.

Parameters:
  • path (str) – The resource path to use in the URL
  • destination_directory (str) – The directory in which to save the downloaded file.
  • expected_sha256 (str) – The expected SHA256 sum of the downloaded file.
  • filename (str) – Optional name for the file being saved. If it is not provided, the filename specified in the Content-Disposition header of the response will be used.
post(path, data)

Issue a POST request to the given path containing the given json data.

Parameters:
  • path (str) – The resource path to use in the URL
  • data (dict) – A dictionary of data to be passed as JSON-encoded data to the request.
put(path, data=None)

Issue a PUT request to the given path containing the given json data.

Parameters:
  • path (str) – The resource path to use in the URL
  • data (dict) – A dictionary of data to be passed as JSON-encoded data to the request.
upload(path, data, filename, overwrite=False, enabled=None)

Issue a POST request to the given path containing the given json data and a file..

Parameters:
  • path (str) – The resource path to use in the URL
  • data (dict) – A dictionary of metadata to be passed as JSON-encoded data to the request.
  • filename (str) – Path to the file to upload.
  • overwrite (bool) – Overwrite an existing artefact specified by the same metadata.
  • enabled (bool) – Only valid for egg uploads. If False, egg will not be indexed on upload.

hatcher.core.organization module

class hatcher.core.organization.Organization(name, url_handler)

Bases: hatcher.core.v0.organization.Organization

hatcher.core.repository module

class hatcher.core.repository.Repository(organization_name, name, url_handler)

Bases: hatcher.core.v0.repository.Repository

class hatcher.core.repository.SinglePlatformRepository(repository, platform, url_handler)

Bases: hatcher.core.v0.repository.SinglePlatformRepository

hatcher.core.team module

class hatcher.core.team.Team(organization_name, name, url_handler)

Bases: hatcher.core.v0.team.Team

hatcher.core.url_templates module

class hatcher.core.url_templates.UrlBuilder(name, template, *children, **defaults)

Bases: object

defaults
format(**kwargs)
full_template
set_parent(parent)

hatcher.core.user module

class hatcher.core.user.User(organization_name, email, url_handler, model_registry)

Bases: object

delete()

Delete this user from the brood server.

metadata()

Get the user’s metadata.

hatcher.core.utils module

class hatcher.core.utils.AppSorter(name, version, python_tag)

Bases: hatcher.core.utils._SorterMixin

class hatcher.core.utils.EggMetadata(metadata, path)

Bases: object

classmethod from_file(path)
full_version
name
python_tag
sha256
class hatcher.core.utils.EggNameSorter(egg_file_name)

Bases: hatcher.core.utils._SorterMixin

class hatcher.core.utils.NameVersionPairSorter(name, version, version_parser=<class 'okonomiyaki.versions.pep440.PEP440Version'>)

Bases: hatcher.core.utils._SorterMixin

class hatcher.core.utils.RuntimeMetadata(*args, **kwargs)

Bases: hatcher.core.utils.RuntimeMetadataV0

class hatcher.core.utils.RuntimeMetadataV0(language, version, build, platform, build_system_version, file_format, path)

Bases: object

filename
classmethod from_file(path, platform=None)
full_version
python_tag
sha256
class hatcher.core.utils.RuntimeMetadataV1(path, metadata)

Bases: object

classmethod from_file(path)
implementation
platform
sha256
version
class hatcher.core.utils.RuntimeV0Sorter(filename)

Bases: hatcher.core.utils.AppSorter

hatcher.core.utils.compute_md5(filename, block_size=16384)
hatcher.core.utils.compute_sha256(filename, block_size=16384)
hatcher.core.utils.hatcher_user_agent()
hatcher.core.utils.python_tag_name(tag)