* [pyosmium](https://osmcode.org/pyosmium/)
+For running the experimental Python frontend:
+
+ * [SQLAlchemy](https://www.sqlalchemy.org/) (1.4+ with greenlet support)
+ * one of the following web frameworks:
+ * [falcon](https://falconframework.org/) (3.0+)
+ * [sanic](https://sanic.dev)
+ * [starlette](https://www.starlette.io/)
+ * [uvicorn](https://www.uvicorn.org/) (only with falcon and starlette framworks)
+
For dependencies for running tests and building documentation, see
the [Development section](../develop/Development-Environment.md).
* [Python Typing Extensions](https://github.com/python/typing_extensions) (for Python < 3.9)
* [pytest](https://pytest.org)
+For testing the Python search frontend, you need to install extra dependencies
+depending on your choice of webserver framework:
+
+* [sanic-testing](https://sanic.dev/en/plugins/sanic-testing/getting-started.html) (sanic only)
+* [httpx](https://www.python-httpx.org/) (starlette only)
+* [asgi-lifespan](https://github.com/florimondmanca/asgi-lifespan) (starlette only)
+
The documentation is built with mkdocs:
* [mkdocs](https://www.mkdocs.org/) >= 1.1.2
python3-pip python3-setuptools python3-dev
pip3 install --user behave mkdocs mkdocstrings pytest pylint \
- mypy types-PyYAML types-jinja2 types-psycopg2 types-psutil
+ mypy types-PyYAML types-jinja2 types-psycopg2 types-psutil \
+ sanic-testing httpx asgi-lifespan
```
The `mkdocs` executable will be located in `.local/bin`. You may have to add
* `TEST_DB` - name of test database (db tests)
* `API_TEST_DB` - name of the database containing the API test data (api tests)
* `API_TEST_FILE` - OSM file to be imported into the API test database (api tests)
+ * `API_ENGINE` - webframe to use for running search queries, same values as
+ `nominatim serve --engine` parameter
* `DB_HOST` - (optional) hostname of database host
* `DB_PORT` - (optional) port of database on host
* `DB_USER` - (optional) username of database login
API tests should only be testing the functionality of the website PHP code.
Most tests should be formulated as BDD DB creation tests (see below) instead.
-#### Code Coverage
+#### Code Coverage (PHP engine only)
The API tests also support code coverage tests. You need to install
[PHP_CodeCoverage](https://github.com/sebastianbergmann/php-code-coverage).
These tests check that data is imported correctly into the place table. They
use the same template database as the DB Creation tests, so the same remarks apply.
-
-Note that most testing of the gazetteer output of osm2pgsql is done in the tests
-of osm2pgsql itself. The BDD tests are just there to ensure compatibility of
-the osm2pgsql and Nominatim code.