# 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