an issue first or comment on the appropriate issue already existing so
that duplicate work can be avoided.
+### Using AI-assisted code generators
+
+PRs that include AI-generated content, may that be in code, in the PR
+description or in documentation need to
+
+1. clearly mark the AI-generated sections as such, for example, by
+ mentioning all use of AI in the PR description, and
+2. include proof that you have run the generated code on an actual
+ installation of Nominatim. Adding and excuting tests will not be
+ sufficient. You need to show that the code actually solves the problem
+ the PR claims to solve.
+
+
## Coding style
Nominatim historically hasn't followed a particular coding style but we
* no spaces after opening and before closing bracket
* leave out space between a function name and bracket
but add one between control statement(if, while, etc.) and bracket
- * for PHP variables use CamelCase with a prefixing letter indicating the type
- (i - integer, f - float, a - array, s - string, o - object)
-The coding style is enforced with PHPCS and pylint. It can be tested with:
+The coding style is enforced with flake8. It can be tested with:
```
-phpcs --report-width=120 --colors .
-pylint3 --extension-pkg-whitelist=osmium nominatim
+make lint
```
## Testing
Before submitting a pull request make sure that the tests pass:
```
- cd build
- make test
+ make tests
```
## Releases
Nominatim follows semantic versioning. Major releases are done for large changes
that require (or at least strongly recommend) a reimport of the databases.
-Minor releases can usually be applied to exisiting databases Patch releases
+Minor releases can usually be applied to existing databases. Patch releases
contain bug fixes only and are released from a separate branch where the
relevant changes are cherry-picked from the master branch.
Checklist for releases:
-* [ ] increase version in `nominatim/version.py` and CMakeLists.txt
+* [ ] increase versions in
+ * `src/nominatim_api/version.py`
+ * `src/nominatim_db/version.py`
+ * CMakeLists.txt
* [ ] update `ChangeLog` (copy information from patch releases from release branch)
* [ ] complete `docs/admin/Migration.md`
* [ ] update EOL dates in `SECURITY.md`
* compile and import Nominatim
* run `nominatim --version` to confirm correct version
* [ ] tag new release and add a release on github.com
+* [ ] build pip packages and upload to pypi