---
# System prepended metadata

title: Declarative GT4Py design improvements and cleanup
tags: [functional cycle 10]

---

# Declarative GT4Py design improvements and cleanup

###### tags: `functional cycle 10`

Appetite: 

Developer: Enrique, Rico (after C++ integration)

## Goals

### Project structure refactoring

- [ ] Cleanup packages structure
    + move things to better places (e.g. embedded/iterator)
    + make implementations details private (e.g. most of `embedded` iterator module)
- [ ] Define a better test structure
    + make it easy to find a test
    + make it easy to find the right place to put a test
    + Optional: add test coverage


### Development guidelines

- [x] Add DEVELOPMENT_GUIDELINES.md
    + Adapted from master/CODING_GUIDELINES.rst
    + Add mention and link to [Google Python style guide](https://google.github.io/styleguide/pyguide.html)
    + Add Google docstrings conventions
        + using only lightweight RST markups (links to other items and `literal` strings)
    + Add section for test best practices
        + factories and test input data (factory boy? pytest-cases?)
        + running tests in parallel: pytest-xdist[psutil] (`-n auto`) 
        + run only the tests that failed last time: `--lf / --last-failed` option.
        + run all the tests starting with the tests that failed last time: `--ff / --failed-first` option
        + use ` -l / --showlocalsflag` option to see the value of all local variables in tracebacks
    + Other topics
        + Comment CI ignores
        + In config files, try to keep sections and items within sections ordered logically. If there is not an evident logical order, just use alphabetical order

- [ ] Quick overview presentation for development guidelines


### QA and development tools

- [ ] pytest
    - [ ] coverage & pytest-cov
    - [x] parallelization: [pytest-xdist](https://pytest-xdist.readthedocs.io/en/latest/)
    - [ ] formatting & interface: [pytest-clarity](https://github.com/darrenburns/pytest-clarity)? [pytest-sugar](https://github.com/Teemu/pytest-sugar)?
    - [ ] advanced features: [pytest-randomly](https://github.com/pytest-dev/pytest-randomly)?, [pytest-lazy-fixture](https://github.com/tvorog/pytest-lazy-fixture)?, [https://pypi.org/project/pytest-deadfixtures/](pytest-deadfixtures)?

- [ ] pre-commit 
    -  [ ] add license headers with pre-commit hook

- [x] bump2version
    - [x] Cartesian: 0.1.xx
    - [x] Declarative: 0.2.xxx


