port unit tests to new python package layout

This commit is contained in:
Sarah Hoffmann
2024-06-09 14:52:20 +02:00
parent c903559415
commit 2bab0ca060
100 changed files with 570 additions and 557 deletions

View File

@@ -36,3 +36,5 @@ from .results import (SourceTable as SourceTable,
SearchResult as SearchResult,
SearchResults as SearchResults)
from .localization import (Locales as Locales)
from .version import NOMINATIM_API_VERSION as __version__

View File

@@ -49,6 +49,6 @@ async def make_query_analyzer(conn: SearchConnection) -> AbstractQueryAnalyzer:
log().comment(f"No tokenizer named '{name}' available. Database not set up properly.")
raise RuntimeError('Tokenizer not found')
module = importlib.import_module(f'nominatim_api.api.search.{name}_tokenizer')
module = importlib.import_module(f'nominatim_api.search.{name}_tokenizer')
return cast(AbstractQueryAnalyzer, await module.create_query_analyzer(conn))

View File

@@ -14,7 +14,7 @@ import dataclasses
import sqlalchemy as sa
from .connection import SearchConnection
from .version import NOMINATIM_API_VERSION
from .version import NOMINATIM_API_VERSION, parse_version
@dataclasses.dataclass
class StatusResult:
@@ -44,7 +44,7 @@ async def get_status(conn: SearchConnection) -> StatusResult:
# Database version
try:
status.database_version = await conn.get_property('database_version')
status.database_version = parse_version(await conn.get_property('database_version'))
except ValueError:
pass

View File

@@ -8,4 +8,6 @@
Version information for the Nominatim API.
"""
from nominatim_core.version import NominatimVersion, parse_version
NOMINATIM_API_VERSION = '4.4.99'

View File

@@ -9,7 +9,7 @@ Path settings for extra data used by Nominatim.
"""
from pathlib import Path
PHPLIB_DIR = None
PHPLIB_DIR = (Path(__file__) / '..' / '..' / '..' / 'lib-php').resolve()
SQLLIB_DIR = (Path(__file__) / '..' / '..' / '..' / 'lib-sql').resolve()
DATA_DIR = (Path(__file__) / '..' / '..' / '..' / 'data').resolve()
CONFIG_DIR = (Path(__file__) / '..' / '..' / '..' / 'settings').resolve()

View File

@@ -7,5 +7,50 @@
"""
Version information for the Nominatim core package.
"""
from typing import NamedTuple, Optional
NOMINATIM_CORE_VERSION = '4.4.99'
class NominatimVersion(NamedTuple):
""" Version information for Nominatim. We follow semantic versioning.
Major, minor and patch_level refer to the last released version.
The database patch level tracks important changes between releases
and must always be increased when there is a change to the database or code
that requires a migration.
When adding a migration on the development branch, raise the patch level
to 99 to make sure that the migration is applied when updating from a
patch release to the next minor version. Patch releases usually shouldn't
have migrations in them. When they are needed, then make sure that the
migration can be reapplied and set the migration version to the appropriate
patch level when cherry-picking the commit with the migration.
"""
major: int
minor: int
patch_level: int
db_patch_level: Optional[int]
def __str__(self) -> str:
if self.db_patch_level is None:
return f"{self.major}.{self.minor}.{self.patch_level}"
return f"{self.major}.{self.minor}.{self.patch_level}-{self.db_patch_level}"
def release_version(self) -> str:
""" Return the release version in semantic versioning format.
The release version does not include the database patch version.
"""
return f"{self.major}.{self.minor}.{self.patch_level}"
def parse_version(version: str) -> NominatimVersion:
""" Parse a version string into a version consisting of a tuple of
four ints: major, minor, patch level, database patch level
This is the reverse operation of `version_str()`.
"""
parts = version.split('.')
return NominatimVersion(*[int(x) for x in parts[:2] + parts[2].split('-')])

View File

@@ -180,7 +180,7 @@ class AdminServe:
else:
port = 8088
server_module = importlib.import_module(f'nominatim_db.server.{args.engine}.server')
server_module = importlib.import_module(f'nominatim_api.server.{args.engine}.server')
app = server_module.get_application(args.project_dir)
uvicorn.run(app, host=host, port=port)

View File

@@ -7,7 +7,7 @@
"""
Subcommand definitions for API calls from the command line.
"""
from typing import Dict, Any
from typing import Dict, Any, Optional
import argparse
import logging
import json

View File

@@ -7,38 +7,9 @@
"""
Version information for Nominatim.
"""
from typing import Optional, NamedTuple
from typing import Optional
class NominatimVersion(NamedTuple):
""" Version information for Nominatim. We follow semantic versioning.
Major, minor and patch_level refer to the last released version.
The database patch level tracks important changes between releases
and must always be increased when there is a change to the database or code
that requires a migration.
When adding a migration on the development branch, raise the patch level
to 99 to make sure that the migration is applied when updating from a
patch release to the next minor version. Patch releases usually shouldn't
have migrations in them. When they are needed, then make sure that the
migration can be reapplied and set the migration version to the appropriate
patch level when cherry-picking the commit with the migration.
"""
major: int
minor: int
patch_level: int
db_patch_level: int
def __str__(self) -> str:
return f"{self.major}.{self.minor}.{self.patch_level}-{self.db_patch_level}"
def release_version(self) -> str:
""" Return the release version in semantic versioning format.
The release version does not include the database patch version.
"""
return f"{self.major}.{self.minor}.{self.patch_level}"
from nominatim_core.version import NominatimVersion, parse_version
NOMINATIM_VERSION = NominatimVersion(4, 4, 99, 1)
@@ -50,13 +21,3 @@ POSTGIS_REQUIRED_VERSION = (2, 2)
# cmake/tool-installed.tmpl is used to build the binary 'nominatim'. Inside
# there is a call to set the variable value below.
GIT_COMMIT_HASH : Optional[str] = None
def parse_version(version: str) -> NominatimVersion:
""" Parse a version string into a version consisting of a tuple of
four ints: major, minor, patch level, database patch level
This is the reverse operation of `version_str()`.
"""
parts = version.split('.')
return NominatimVersion(*[int(x) for x in parts[:2] + parts[2].split('-')])