Skip to main content

API Client library for the Past to Future project.

Project description

p2f-client-py

Python client library for the Past to Future projects Portal. Past to Future is an EU Horizon funded project.

Installation

pip install p2f-client-py

Usage

Create a client

from p2f_client import P2F_Client

p2f_api_url = "{fill in API URL here}"
port = 443

client = P2F_Client(hostname=p2f_api_url, https=True, email="your@email.dm")

# request a token
client.request_token()

# Open your local file and update the configuration with your new p2f token. 
client.set_token()

On your first usage of the client on a computer the library will create a .p2f folder for storing a configuration of your account. A config file is used because this will prevent tokens from being uploaded to a remote Git repository where they could theoretically be exploited.

Authentication

If you are a member of the P2F Consortium, your email has been registered with the API as allowed to perform certain actions. As seen in the usage above, you need to request a token, which will make a request to the API, the API will then send you an email from the project email address with a token. The token is a password that is valid for 24-hours (subject to change in the future). You will need to add the token to the config file which will be located in your user profile folder at .p2f/CONFIG. The function in the client .set_token() will give you the path for the token. When you request a token the client will add a timestamp into the config file to indicate when the token expires. 5 minutes after requesting a token, if you make another request, nothing will happen, if you're still waiting on the token, please be patient, it should arrive. If a token never arrives, please message the P2F Portal developer. The API uses the email and token in almost every request, and will block most un-authenticated requests.

Library Naming Conventions

Within this client library are sub-clients for interacting with datasets, data, locations, references, etc on the API. Within each of these are functions to perform the different interactions:

  • upload - directly upload an item to the API
  • list - get a list of items, with filters to narrow down your results
  • get - get a single item by its item type id
  • delete - delete a record by its item type id
  • assign - assign an item type (through its id) to either a record or dataset
  • remove - remove the assigned item type from its associated record or dataset, does not delete the item type

Data Types

The P2F portal has many different kinds of data to represent, for the different kinds of portal data items (datasets, records, species, locations, etc), in this README they will be referred to as item types.

The P2F portal is a relational model where most items are related to a dataset directly, or to a dataset indirectly through a record. Datasets are any collection of data, preferrably with a DOI, datasets are identified by dataset_id. Records are individual data points (or rows) within a dataset, records are identified by their record_hash.

Items that associate directly to a Dataset:

  • Sub-datasets
  • Records
  • Git Repositories

Items that associate directly to a Record:

  • HARM Numerical - Harmonized Numerical records, Integer, Integer with Confidence Interval, Float, Float with Confidence Interval
  • HARM Species
  • HARM Location
  • HARM Timeslice - A named timeslice from the P2F project
  • HARM Age - The calculated represented age for a data point in years before present
  • HARM Reference

Items that associate to HARM Numerical:

  • HARM Data Type

Pydantic

The above items are all defined by a Pydantic object. Pydantic is a library that allows validates data structures and are easily convertible to dictionaries and json strings. These data structures are very handy for standardizing the data that goes into the portal, and required for the API library. A p2f-pydantic library was created as a separate project to standardize the data models of the API and this client library. When you install p2f-client-py, p2f-pydantic is a dependency and will be installed alongside, so you can import p2f_pydantic objects as necessary.

HOWEVER, new in v0.0.18, each of the item classes has a .data_type that references the p2f_pydantic object directly

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

p2f_client_py-0.0.19.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

p2f_client_py-0.0.19-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file p2f_client_py-0.0.19.tar.gz.

File metadata

  • Download URL: p2f_client_py-0.0.19.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for p2f_client_py-0.0.19.tar.gz
Algorithm Hash digest
SHA256 e7bf85157ddfffc010c0bb6baa32b38008cfbdf25793b10371e9566b79242338
MD5 c758850e937af3b902c7b55976e7097f
BLAKE2b-256 025a00e3d60e77a2db7d2947474459f5b409ab3118b9ca3b11b584630ec0d1ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for p2f_client_py-0.0.19.tar.gz:

Publisher: pypi-publish.yml on Past-to-Future-EU-Horizon/p2f-client-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file p2f_client_py-0.0.19-py3-none-any.whl.

File metadata

  • Download URL: p2f_client_py-0.0.19-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for p2f_client_py-0.0.19-py3-none-any.whl
Algorithm Hash digest
SHA256 a97e08b801626f2bda2ecbd477a11fc819a1c7ae88bfd9f936a3f2bd9e08cd86
MD5 82896f01e6a754a7d900ec78f21d670b
BLAKE2b-256 1aba1ade2a87990ef6716da3609a8fa0d2c928a35098b6ea729eb95a02990c9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for p2f_client_py-0.0.19-py3-none-any.whl:

Publisher: pypi-publish.yml on Past-to-Future-EU-Horizon/p2f-client-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page