Arca is a library for running Python functions (callables) from git repositories in various states of isolation. Arca can also cache the results of these callables using dogpile.cache.
- Arca - name of the library. When written as
Arca
, the main interface class is being referenced. - Task - definition of the function (callable), consists of a reference to the object and arguments.
- Backend - a way of running tasks.
- Python >= 3.6
Requirements for certain backends:
- Pipenv (for certain usecases in Virtualenv Backend)
- Docker (for Docker Backend and Vagrant Backend)
- Vagrant (for the Vagrant Backend)
To install the last stable version:
python -m pip install arca
If you want to use the Docker backend:
python -m pip install arca[docker]
Or if you want to use the Vagrant backend:
python -m pip install arca[vagrant]
Or if you wish to install the upstream version:
python -m pip install git+https://github.com/pyvec/arca.git#egg=arca
python -m pip install git+https://github.com/pyvec/arca.git#egg=arca[docker]
python -m pip install git+https://github.com/pyvec/arca.git#egg=arca[vagrant]
To run a Hello World example you'll only need the arca.Arca
and arca.Task
classes.
Task
is used for defining the task that's supposed to be run in the repositories.
Arca
takes care of all the settings and provides the basic API for running the tasks.
Let's say we have the following file, called hello_world.py
,
in a repository https://example.com/hello_word.git
, on branch master
.
def say_hello():
return "Hello World!"
To call the function using Arca, the following example would do so:
from arca import Arca, Task
task = Task("hello_world:say_hello")
arca = Arca()
result = arca.run("https://example.com/hello_word.git", "master", task)
print(result.output)
The code would print Hello World!
.
result
would be a arca.Result
instance. arca.Result
has three attributes,
output
with the return value of the function call, stdout
and stderr
contain things printed to the standard outputs
(see the section about Result for more info about the capture of the standard outputs).
If the task fails, arca.exceptions.BuildError
would be raised.
By default, the Current Environment Backend is used to run tasks, which uses the current Python, launching the code in a subprocess. You can learn about backends here.
You can read the full documentation on Read The Docs.
To run tests you'll need the optional requirements, Docker and Vagrant. Once you have them and they can be used by the current user you just need to run:
python setup.py test
This will launch the tests and a PEP8 check. The tests will take some time since building the custom docker images is also tested and vagrant, in general, takes a long time to set up.
Contributions are welcomed! Feel free to open a issue or submit a pull request on GitHub!
- Repository: GitHub
- PyPi package: arca
- CI: Travis
- Test coverage: Codecov
- Documentation: Read The Docs
This project is licensed under the MIT License - see the LICENSE file for details.