Package: roberto
Roberto is a collection of configurable development work flows. Its goal is to
facilitate the development and quality assurance of some packages in the
theochem organization on Github.With a relatively simple configuration file (.roberto.yaml), the commandrobwill take the following steps:Optionally install miniconda (and a MacOSX SDK on OSX).Make a conda or venv environment for development and testingInstall dependencies (for the package being developed and for all
development tools).Build the software in-place, i.e. without installing it.Run Linters (optionally showing only messages related to your changes).Run unit and other testsBuild the documentationWhen you runrob robot, a few additional steps will be performed, which are
not done by default because they are slow and have a low risk of failing:Upload the documentation. (disabled by default)Make source and binary release packages.Deploy the releases. (disabled by default)(A few minor steps were omitted for clarity.) These steps should work on your
local computer in the same way as on a continuous integration system like
Github Actions, making it easy to prepare a pull request locally. It is also
possible to just run a subset of these tasks, which is often needed when working
on the code. Several steps will also reuse previous results (e.g. conda or venv
environment) if these are already present, to speed up Roberto.The preparation tasks (1-3) are somewhat hard-coded but they are clever enough
to install a decent development environment with the correct requirements for
the remaining tasks. These remaining tasks (4-10) are configurable and can be
changed to work for Python and/or CMake projects.InstallationPython 3 (>=3.7) must be installed. Other dependencies will be pulled in with
the instructions below.Roberto can be installed with conda:condainstalltheochem::robertoIt can also be installed with pip. One of the following is fine, whichever you
prefer:pipinstallrobertopipinstallroberto--userpython3-mpipinstallrobertopython3-mpipinstallroberto--userOn some platforms, you may have to adapt your${PATH}variable before you
can runrob.UsageBy default, Roberto will use venv, unless it is configured to use conda. While
conda is more powerful than venv, it is also a lot slower and requires more
storage than venv.When using conda, be aware that Roberto will install miniconda, by default in~/miniconda3, if not present yet. You can modify this directory by setting
the environment variableROBERTO_CONDA_BASE_PATHor by putting the following
in your global Roberto configuration file~/.roberto.yaml:conda:base_path:<your/preferred/location>E.g. you can use this to avoid interference with an existing miniconda install.Roberto will also make new conda or venv environments for the development of
every package, with relatively long names. For example, when Roberto is executed
in its own source tree, the conda environment would beroberto-dev-python-3.7.To use Roberto, just runrobin the root of the source tree, where also the
project’s.roberto.yamlis located. Userob--helpto get a list of
tasks if you are interested in replicating just a part of the CI process. If
your${PATH}variable is not set correctly, you can also run Roberto aspython3-mrobertoinstead ofrob.It is a good practice to runrobbefore everygit committo make sure
the committed code is clean and working.When using the cardboardlint tool and when you are working in a development
branch, cardboardlint will only show linter messages for lines of code that you
have changed. If you would like to see all messages, run Roberto asROBERTO_ABSOLUTE=1 rob.More details, e.g. on how to configure Roberto, can be found in the
documentation:https://theochem.github.com/robertoDevelopmentIf you have questions or ideas, just open an issue on Github. Practical
information on how to contribute can be found inCONTRIBUTING.rst.Roberto is intentionally a small code base, so one can easily understand how
it works by reading the source code. Roberto makes extensive use ofinvoketo avoid having to write a lot of boiler-plate code.