The Golem Network fosters a global group of creators building ambitious software solutions that will shape the technological landscape of future generations by accessing computing resources across the platform. Golem Network is an accessible, reliable, open access and censorship-resistant protocol, democratizing access to digital resources and connecting users through a flexible, open-source platform.
Yapapi is the Python high-level API that allows developers to connect to their Golem nodes and manage their distributed, computational loads through Golem Network.
For a detailed introduction to using Golem and yapapi to run your tasks on Golem and a guide to Golem Network application development in general, please consult our handbook.
yapapi
is available as a PyPI package.
You can install it through pip
:
pip install yapapi
Or if your project uses poetry
you can add it to your dependencies like this:
poetry add yapapi
For a comprehensive API reference, please refer to our official readthedocs page.
yapapi
uses poetry
to manage its dependencies and provide a runner for common tasks.
If you don't have poetry
available on your system then follow its installation instructions before proceeding.
Verify your installation by running:
poetry --version
To install the project's dependencies run:
poetry install
By default, poetry
looks for the required Python version on your PATH
and creates a virtual environment for the project if there's none active (or already configured by Poetry).
All of the project's dependencies will be installed to that virtual environment.
yapapi
uses Poe the Poet for running tasks.
Declarations of project tasks can be found in pyproject.toml
.
poetry run poe tests_unit
goth
integration testsIf you'd like to run the yapapi
integration test suite locally then you'll need to install an additional set of dependencies separately.
First, install the dependencies required to run goth.
Next, configure goth's GitHub API token.
Make sure you have OpenSSH installed and added to path
ssh -V
Now, you can install goth and its additional python requirements:
poetry install -E integration-tests
Finally, generate goth's default assets:
poetry run poe tests_integration_assets
Once you have the environment set up, to run all the integration tests, use:
poetry run poe tests_integration
It is recommended to run unit tests and static code analysis before committing changes.
poetry run poe checks
You can clean up the artifacts created during the test runs with:
poetry run poe clean
It's possible to set various elements of yagna
configuration through environment variables.
yapapi
currently supports the following environment variables:
YAGNA_ACTIVITY_URL
, URL to yagna
activity API, e.g. http://localhost:7500/activity-api/v1
YAGNA_API_URL
, base URL to yagna
REST API, e.g. http://localhost:7500
YAGNA_APPKEY
, yagna
app key to be used, e.g. a70facb9501d4528a77f25574ab0f12b
YAGNA_MARKET_URL
, URL to yagna
market API, e.g. http://localhost:7500/market-api/v1
YAGNA_PAYMENT_NETWORK
, Ethereum network name for yagna
to use, e.g. rinkeby
YAGNA_PAYMENT_DRIVER
, payment driver name for yagna
to use, e.g. erc20
YAGNA_PAYMENT_URL
, URL to yagna
payment API, e.g. http://localhost:7500/payment-api/v1
YAGNA_NET_URL
, URL to yagna
net APU, e.g. http://localhost:7500/net-api/v1
YAGNA_SUBNET
, name of the yagna
sub network to be used, e.g. public
YAPAPI_USE_GFTP_CLOSE
, if set to a truthy value (e.g. "1", "Y", "True", "on") then yapapi
will ask gftp
to close files when there's no need to publish them any longer. This may greatly
reduce the number of files kept open while yapapi
is running but requires yagna
0.7.3 or newer, with older versions it will cause errors.