Skip to content

Commit

Permalink
Improve README
Browse files Browse the repository at this point in the history
  • Loading branch information
Irratzo committed May 3, 2023
1 parent 5b4adbe commit 1964cdd
Showing 1 changed file with 19 additions and 24 deletions.
43 changes: 19 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,11 @@

This package offers

1. Tools for managing high-throughput experiments (thousands or millions of database nodes) with [AiiDA]
(https://aiida.net).
2. Science tools:
- `jutools.structure.analyze_symmetry`
3. common plugin developer tools for
- [aiida-fleur](https://github.com/JuDFTteam/aiida-kkr/)
- [aiida-kkr](https://github.com/JuDFTteam/aiida-fleur)
- [aiida-spex](https://iffgit.fz-juelich.de/chand/aiida-spex)
- [aiida-spirit](https://github.com/JuDFTteam/aiida-spirit)
1. **For users:** Tools for simplifying daily work with the [AiiDA](https://aiida.net) workflow engine, especically with respect to data management and high-throughput computing.
2. **For developers**: Common AiiDA layer for the [JuDFTteam AiiDA plugins](https://github.com/JuDFTteam). The underlying common Python layer is called [masci-tools](https://github.com/JuDFTteam/masci-tools).
<!-- 3. Science tools: -->
<!-- - `jutools.structure.structure_analyzer.analyze_symmetry` -->


Just import with ``import aiida_jutools as jutools``. Then you can call all tools like so: ``jutools.subpackage.tool
()``.
Expand All @@ -34,30 +30,29 @@ pip install -e .

## Documentation

Under construction. For the time being, see the extensive docstring documentation.
Under construction. However, all classes and methods have comprehensive docstrings.

### For developers

Written some AiiDA code potentially useful for others? Please add it here!

Please adhere to the developer coding conventions:
- Place larger classes in a subpackage (subfolder) in a separate module (file). Smaller stuff like functions go in the
- Place larger classes in a subpackage (subfolder) in a separate module (file). Smaller stuff like functions go in the
respective subpackage's ``subpackage/util.py``.
- Make all tools available at subpackage level via import in ``subpackage/__init__.py``. See existing files for how
to do that. Also import each new subpackage in the package's top-level ``__init__.py``. Together, this enables to
access all tools with tab completion like ``jutools.subpackage.tool()`` instead of needing to import single modules.
The former is better practice. For that purpose, keep subpackage and module names short but clear, preferably one
word only, as opposed to tool names which should be as long as needed to be self-explanatory.
- Make all tools available at subpackage level via import in ``subpackage/__init__.py``. See existing files for how
to do that. Also import each new subpackage in the package's top-level ``__init__.py``. Together, this enables to
access all tools with tab completion like ``jutools.subpackage.tool()`` instead of needing to import single modules.
The former is better practice. For that purpose, keep subpackage and module names short but clear, preferably one
word only, as opposed to tool names which should be as long as needed to be self-explanatory.
- Prefix non-user tools with ``_`` to keep user namespace clean and organized.
- Prefix all imports inside modules with ``_`` to keep user namespace clean and organized. Prefer top namespace
imports to avoid name conflicts and ambiguities. See existing modules for conventions, e.g. with respect to AiiDA
- Prefix all imports inside modules with ``_`` to keep user namespace clean and organized. Prefer top namespace
imports to avoid name conflicts and ambiguities. See existing modules for conventions, e.g. with respect to AiiDA
imports.
- Add docstring for every added tool. Add ``typing`` hints wherever possible and sensible. See existing modules for
- Add docstring for every added tool. Add ``typing`` hints wherever possible and sensible. See existing modules for
examples.
- When manipulating AiiDA nodes, implement with 'load or create' pattern: load nodes if already exist, otherwise create.
Provide a ``dry_run:bool=True`` and verbosity options (``verbosity:int``, ``verbose:bool``, or ``silent:bool``).
- If you use [cross-references](https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#cross-referencing-python-objects)
in docstrings, do cross-referencing relative to the current location (i.e., prefixed by a dot `.`). Example:
`` :py:func:`~.query_processes` `` instead of
`` :py:func:`~aiida_jutools.process.query_processes` ``, when in module `aiida_jutools.process`.

- If you use [cross-references](https://www.sphinx-doc.org/en/master/usage/restructuredtext/domains.html#cross-referencing-python-objects)
in docstrings, do cross-referencing relative to the current location (i.e., prefixed by a dot `.`). Example:
`` :py:func:`~.query_processes` `` instead of
`` :py:func:`~aiida_jutools.process.query_processes` ``, when in module `aiida_jutools.process`.

0 comments on commit 1964cdd

Please sign in to comment.