mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
reduce from 3 to 2 packages
This commit is contained in:
@@ -221,22 +221,22 @@ if (BUILD_IMPORTER)
|
|||||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
RENAME nominatim)
|
RENAME nominatim)
|
||||||
|
|
||||||
foreach (submodule nominatim_core nominatim_db nominatim_api)
|
|
||||||
install(DIRECTORY src/${submodule}
|
|
||||||
DESTINATION ${NOMINATIM_LIBDIR}/lib-python
|
|
||||||
FILES_MATCHING PATTERN "*.py"
|
|
||||||
PATTERN "paths.py" EXCLUDE
|
|
||||||
PATTERN __pycache__ EXCLUDE)
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
if (EXISTS ${PHP_BIN})
|
if (EXISTS ${PHP_BIN})
|
||||||
configure_file(${PROJECT_SOURCE_DIR}/cmake/paths-py.tmpl paths-py.installed)
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/paths-py.tmpl paths-py.installed)
|
||||||
else()
|
else()
|
||||||
configure_file(${PROJECT_SOURCE_DIR}/cmake/paths-py-no-php.tmpl paths-py.installed)
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/paths-py-no-php.tmpl paths-py.installed)
|
||||||
endif()
|
endif()
|
||||||
install(FILES ${PROJECT_BINARY_DIR}/paths-py.installed
|
|
||||||
DESTINATION ${NOMINATIM_LIBDIR}/lib-python/nominatim_core
|
foreach (submodule nominatim_db nominatim_api)
|
||||||
RENAME paths.py)
|
install(DIRECTORY src/${submodule}
|
||||||
|
DESTINATION ${NOMINATIM_LIBDIR}/lib-python
|
||||||
|
FILES_MATCHING PATTERN "*.py"
|
||||||
|
PATTERN "paths.py" EXCLUDE
|
||||||
|
PATTERN __pycache__ EXCLUDE)
|
||||||
|
install(FILES ${PROJECT_BINARY_DIR}/paths-py.installed
|
||||||
|
DESTINATION ${NOMINATIM_LIBDIR}/lib-python/${submodule}
|
||||||
|
RENAME paths.py)
|
||||||
|
endforeach()
|
||||||
|
|
||||||
install(DIRECTORY lib-sql DESTINATION ${NOMINATIM_LIBDIR})
|
install(DIRECTORY lib-sql DESTINATION ${NOMINATIM_LIBDIR})
|
||||||
|
|
||||||
|
|||||||
8
Makefile
8
Makefile
@@ -2,10 +2,10 @@ all:
|
|||||||
|
|
||||||
# Building of wheels
|
# Building of wheels
|
||||||
|
|
||||||
build: build-core build-db build-api
|
build: clean-build build-db build-api
|
||||||
|
|
||||||
build-core:
|
clean-build:
|
||||||
python3 -m build packaging/nominatim-core --outdir dist/
|
rm -f dist/*
|
||||||
|
|
||||||
build-db:
|
build-db:
|
||||||
python3 -m build packaging/nominatim-db --outdir dist/
|
python3 -m build packaging/nominatim-db --outdir dist/
|
||||||
@@ -29,4 +29,4 @@ lint:
|
|||||||
bdd:
|
bdd:
|
||||||
cd test/bdd; behave -DREMOVE_TEMPLATE=1
|
cd test/bdd; behave -DREMOVE_TEMPLATE=1
|
||||||
|
|
||||||
.PHONY: tests mypy pytest lint bdd build build-core build-db build-api
|
.PHONY: tests mypy pytest lint bdd build clean-build build-db build-api
|
||||||
|
|||||||
@@ -162,7 +162,7 @@ Nominatim is easiest to run from its own virtual environment. To create one, run
|
|||||||
|
|
||||||
To install Nominatim directly from the source tree into the virtual environment, run:
|
To install Nominatim directly from the source tree into the virtual environment, run:
|
||||||
|
|
||||||
/srv/nominatim-venv/bin/pip install packaging/nominatim-{core,db,api}
|
/srv/nominatim-venv/bin/pip install packaging/nominatim-{db,api}
|
||||||
|
|
||||||
#### Building in legacy CMake mode
|
#### Building in legacy CMake mode
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ configuration parameters, see the [Configuration page](../customize/Settings.md)
|
|||||||
|
|
||||||
## `Configuration` class
|
## `Configuration` class
|
||||||
|
|
||||||
::: nominatim_core.config.Configuration
|
::: nominatim_api.Configuration
|
||||||
options:
|
options:
|
||||||
members:
|
members:
|
||||||
- get_bool
|
- get_bool
|
||||||
|
|||||||
15
packaging/nominatim-api/extra_src/paths.py
Normal file
15
packaging/nominatim-api/extra_src/paths.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# This file is part of Nominatim. (https://nominatim.org)
|
||||||
|
#
|
||||||
|
# Copyright (C) 2024 by the Nominatim developer community.
|
||||||
|
# For a full list of authors see the git log.
|
||||||
|
"""
|
||||||
|
Path settings for extra data used by Nominatim.
|
||||||
|
"""
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
PHPLIB_DIR = None
|
||||||
|
DATA_DIR = None
|
||||||
|
SQLLIB_DIR = None
|
||||||
|
CONFIG_DIR = (Path(__file__) / '..' / 'resources' / 'settings').resolve()
|
||||||
@@ -14,7 +14,8 @@ classifiers = [
|
|||||||
"Operating System :: OS Independent",
|
"Operating System :: OS Independent",
|
||||||
]
|
]
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"nominatim-core",
|
"python-dotenv",
|
||||||
|
"pyYAML>=5.1",
|
||||||
"SQLAlchemy>=1.4.31",
|
"SQLAlchemy>=1.4.31",
|
||||||
"psycopg",
|
"psycopg",
|
||||||
"PyICU"
|
"PyICU"
|
||||||
@@ -34,8 +35,21 @@ path = "src/nominatim_api/version.py"
|
|||||||
pattern = "NOMINATIM_API_VERSION = '(?P<version>[^']+)'"
|
pattern = "NOMINATIM_API_VERSION = '(?P<version>[^']+)'"
|
||||||
|
|
||||||
[tool.hatch.build.targets.sdist]
|
[tool.hatch.build.targets.sdist]
|
||||||
include = ["src/nominatim_api"]
|
include = [
|
||||||
|
"src/nominatim_api",
|
||||||
|
"src/nominatim_db/config.py",
|
||||||
|
"settings",
|
||||||
|
"extra_src/paths.py"
|
||||||
|
]
|
||||||
|
|
||||||
|
exclude = [
|
||||||
|
"src/nominatim_api/config.py"
|
||||||
|
]
|
||||||
|
|
||||||
[tool.hatch.build.targets.wheel]
|
[tool.hatch.build.targets.wheel]
|
||||||
packages = ["src/nominatim_api"]
|
packages = ["src/nominatim_api"]
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel.force-include]
|
||||||
|
"src/nominatim_db/config.py" = "nominatim_api/config.py"
|
||||||
|
"extra_src/paths.py" = "nominatim_api/paths.py"
|
||||||
|
"settings" = "nominatim_api/resources/settings"
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
../../COPYING
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
Nominatim - Core Package
|
|
||||||
=========
|
|
||||||
|
|
||||||
Nominatim is a tool to search OpenStreetMap data
|
|
||||||
by name and address (geocoding) and to generate synthetic addresses of
|
|
||||||
OSM points (reverse geocoding).
|
|
||||||
|
|
||||||
This is the core pacakage containing resources and code shared by
|
|
||||||
Nominatim's frontend `nominatim-api` and backend `nominatim-db`. You
|
|
||||||
usually don't want to install this package directly.
|
|
||||||
|
|
||||||
Documentation
|
|
||||||
=============
|
|
||||||
|
|
||||||
The documentation of the latest development version is in the
|
|
||||||
`docs/` subdirectory. A HTML version can be found at
|
|
||||||
https://nominatim.org/release-docs/develop/ .
|
|
||||||
|
|
||||||
License
|
|
||||||
=======
|
|
||||||
|
|
||||||
The Python source code is available under a GPL license version 3 or later.
|
|
||||||
The Lua configuration files for osm2pgsql are released under the
|
|
||||||
Apache License, Version 2.0. All other files are under a GPLv2 license.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../data
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
[project]
|
|
||||||
name = "nominatim-core"
|
|
||||||
description = "A tool for building a database of OpenStreetMap for geocoding and for searching the database. Base package for common resources for the project."
|
|
||||||
readme = "README.md"
|
|
||||||
requires-python = ">=3.7"
|
|
||||||
license = 'GPL-3.0-or-later'
|
|
||||||
maintainers = [
|
|
||||||
{ name = "Sarah Hoffmann", email = "lonvia@denofr.de" }
|
|
||||||
]
|
|
||||||
keywords = [ "geocoding", "OpenStreetMap", "search" ]
|
|
||||||
classifiers = [
|
|
||||||
"Programming Language :: Python :: 3",
|
|
||||||
"License :: OSI Approved :: GNU General Public License (GPL)",
|
|
||||||
"Operating System :: OS Independent",
|
|
||||||
]
|
|
||||||
dependencies = [
|
|
||||||
"python-dotenv",
|
|
||||||
"jinja2",
|
|
||||||
"pyYAML>=5.1",
|
|
||||||
"datrie"
|
|
||||||
]
|
|
||||||
dynamic = ["version"]
|
|
||||||
|
|
||||||
[project.urls]
|
|
||||||
Homepage = "https://nominatim.org"
|
|
||||||
Issues = "https://github.com/osm-search/Nominatim/issues"
|
|
||||||
|
|
||||||
[build-system]
|
|
||||||
requires = ["hatchling"]
|
|
||||||
build-backend = "hatchling.build"
|
|
||||||
|
|
||||||
[tool.hatch.version]
|
|
||||||
source = "code"
|
|
||||||
path = "src/nominatim_core/version.py"
|
|
||||||
expression = "NOMINATIM_CORE_VERSION"
|
|
||||||
|
|
||||||
[tool.hatch.build.targets.sdist]
|
|
||||||
include = [
|
|
||||||
"src/nominatim_core",
|
|
||||||
"lib-sql/**.sql",
|
|
||||||
"settings",
|
|
||||||
"data/words.sql",
|
|
||||||
"extra_src/nominatim_core/paths.py"
|
|
||||||
]
|
|
||||||
artifacts = [
|
|
||||||
"data/country_osm_grid.sql.gz"
|
|
||||||
]
|
|
||||||
exclude = [
|
|
||||||
"src/nominatim_core/paths.py"
|
|
||||||
]
|
|
||||||
|
|
||||||
[tool.hatch.build.targets.wheel]
|
|
||||||
packages = ["src/nominatim_core"]
|
|
||||||
|
|
||||||
[tool.hatch.build.targets.wheel.force-include]
|
|
||||||
"lib-sql" = "nominatim_core/resources/lib-sql"
|
|
||||||
"settings" = "nominatim_core/resources/settings"
|
|
||||||
"data/country_osm_grid.sql.gz" = "nominatim_core/resources/country_osm_grid.sql.gz"
|
|
||||||
"data/words.sql" = "nominatim_core/resources/words.sql"
|
|
||||||
"extra_src/nominatim_core/paths.py" = "nominatim_core/paths.py"
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../src
|
|
||||||
1
packaging/nominatim-db/data
Symbolic link
1
packaging/nominatim-db/data
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../data/
|
||||||
@@ -14,8 +14,11 @@ classifiers = [
|
|||||||
"Operating System :: OS Independent",
|
"Operating System :: OS Independent",
|
||||||
]
|
]
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"nominatim-core",
|
|
||||||
"psycopg2-binary",
|
"psycopg2-binary",
|
||||||
|
"python-dotenv",
|
||||||
|
"jinja2",
|
||||||
|
"pyYAML>=5.1",
|
||||||
|
"datrie",
|
||||||
"psutil",
|
"psutil",
|
||||||
"PyICU"
|
"PyICU"
|
||||||
]
|
]
|
||||||
@@ -24,6 +27,7 @@ dynamic = ["version"]
|
|||||||
[project.urls]
|
[project.urls]
|
||||||
Homepage = "https://nominatim.org"
|
Homepage = "https://nominatim.org"
|
||||||
Issues = "https://github.com/osm-search/Nominatim/issues"
|
Issues = "https://github.com/osm-search/Nominatim/issues"
|
||||||
|
Documentation = "https://nominatim.org/release-docs/latest/"
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["hatchling"]
|
requires = ["hatchling"]
|
||||||
@@ -34,10 +38,32 @@ path = "src/nominatim_db/version.py"
|
|||||||
pattern = "NOMINATIM_VERSION = parse_version.'(?P<version>[^-]+)"
|
pattern = "NOMINATIM_VERSION = parse_version.'(?P<version>[^-]+)"
|
||||||
|
|
||||||
[tool.hatch.build.targets.sdist]
|
[tool.hatch.build.targets.sdist]
|
||||||
include = ["src/nominatim_db", "scripts"]
|
include = [
|
||||||
|
"src/nominatim_db",
|
||||||
|
"scripts",
|
||||||
|
"lib-sql/**/*.sql",
|
||||||
|
"settings",
|
||||||
|
"data/words.sql",
|
||||||
|
"extra_src/nominatim_db/paths.py"
|
||||||
|
]
|
||||||
|
|
||||||
|
artifacts = [
|
||||||
|
"data/country_osm_grid.sql.gz"
|
||||||
|
]
|
||||||
|
|
||||||
|
exclude = [
|
||||||
|
"src/nominatim_db/paths.py"
|
||||||
|
]
|
||||||
|
|
||||||
[tool.hatch.build.targets.wheel]
|
[tool.hatch.build.targets.wheel]
|
||||||
packages = ["src/nominatim_db"]
|
packages = ["src/nominatim_db"]
|
||||||
|
|
||||||
[tool.hatch.build.targets.wheel.shared-scripts]
|
[tool.hatch.build.targets.wheel.shared-scripts]
|
||||||
"scripts" = "/"
|
"scripts" = "/"
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel.force-include]
|
||||||
|
"lib-sql" = "nominatim_db/resources/lib-sql"
|
||||||
|
"settings" = "nominatim_db/resources/settings"
|
||||||
|
"data/country_osm_grid.sql.gz" = "nominatim_db/resources/country_osm_grid.sql.gz"
|
||||||
|
"data/words.sql" = "nominatim_db/resources/words.sql"
|
||||||
|
"extra_src/nominatim_db/paths.py" = "nominatim_db/paths.py"
|
||||||
|
|||||||
1
packaging/nominatim-db/settings
Symbolic link
1
packaging/nominatim-db/settings
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../../settings/
|
||||||
@@ -14,8 +14,8 @@ import from this file, not from the source files directly.
|
|||||||
# See also https://github.com/PyCQA/pylint/issues/6006
|
# See also https://github.com/PyCQA/pylint/issues/6006
|
||||||
# pylint: disable=useless-import-alias
|
# pylint: disable=useless-import-alias
|
||||||
|
|
||||||
from nominatim_core.errors import (UsageError as UsageError)
|
from .errors import (UsageError as UsageError)
|
||||||
from nominatim_core.config import (Configuration as Configuration)
|
from .config import (Configuration as Configuration)
|
||||||
|
|
||||||
from .core import (NominatimAPI as NominatimAPI,
|
from .core import (NominatimAPI as NominatimAPI,
|
||||||
NominatimAPIAsync as NominatimAPIAsync)
|
NominatimAPIAsync as NominatimAPIAsync)
|
||||||
|
|||||||
12
src/nominatim_api/config.py
Normal file
12
src/nominatim_api/config.py
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# This file is part of Nominatim. (https://nominatim.org)
|
||||||
|
#
|
||||||
|
# Copyright (C) 2024 by the Nominatim developer community.
|
||||||
|
# For a full list of authors see the git log.
|
||||||
|
|
||||||
|
# This file is just a placeholder to make the config module available
|
||||||
|
# during development. It will be replaced by nominatim_db/config.py on
|
||||||
|
# installation.
|
||||||
|
# pylint: skip-file
|
||||||
|
from nominatim_db.config import *
|
||||||
@@ -14,9 +14,9 @@ import asyncio
|
|||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
from sqlalchemy.ext.asyncio import AsyncConnection
|
from sqlalchemy.ext.asyncio import AsyncConnection
|
||||||
|
|
||||||
from nominatim_core.typing import SaFromClause
|
from .typing import SaFromClause
|
||||||
from nominatim_core.db.sqlalchemy_schema import SearchTables
|
from .sql.sqlalchemy_schema import SearchTables
|
||||||
from nominatim_core.db.sqlalchemy_types import Geometry
|
from .sql.sqlalchemy_types import Geometry
|
||||||
from .logging import log
|
from .logging import log
|
||||||
|
|
||||||
T = TypeVar('T')
|
T = TypeVar('T')
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ from pathlib import Path
|
|||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
import sqlalchemy.ext.asyncio as sa_asyncio
|
import sqlalchemy.ext.asyncio as sa_asyncio
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from .errors import UsageError
|
||||||
from nominatim_core.db.sqlalchemy_schema import SearchTables
|
from .sql.sqlalchemy_schema import SearchTables
|
||||||
from nominatim_core.db.async_core_library import PGCORE_LIB, PGCORE_ERROR
|
from .sql.async_core_library import PGCORE_LIB, PGCORE_ERROR
|
||||||
from nominatim_core.config import Configuration
|
from .config import Configuration
|
||||||
from .sql import sqlite_functions, sqlalchemy_functions #pylint: disable=unused-import
|
from .sql import sqlite_functions, sqlalchemy_functions #pylint: disable=unused-import
|
||||||
from .connection import SearchConnection
|
from .connection import SearchConnection
|
||||||
from .status import get_status, StatusResult
|
from .status import get_status, StatusResult
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import datetime as dt
|
|||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from nominatim_core.typing import SaColumn, SaRow, SaSelect
|
from .typing import SaColumn, SaRow, SaSelect
|
||||||
from .connection import SearchConnection
|
from .connection import SearchConnection
|
||||||
from .logging import log
|
from .logging import log
|
||||||
from . import types as ntyp
|
from . import types as ntyp
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import datetime as dt
|
|||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from nominatim_core.typing import SaSelect, SaRow
|
from .typing import SaSelect, SaRow
|
||||||
from nominatim_core.db.sqlalchemy_types import Geometry
|
from .sql.sqlalchemy_types import Geometry
|
||||||
from .types import Point, Bbox, LookupDetails
|
from .types import Point, Bbox, LookupDetails
|
||||||
from .connection import SearchConnection
|
from .connection import SearchConnection
|
||||||
from .logging import log
|
from .logging import log
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ import functools
|
|||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from nominatim_core.typing import SaColumn, SaSelect, SaFromClause, SaLabel, SaRow,\
|
from .typing import SaColumn, SaSelect, SaFromClause, SaLabel, SaRow,\
|
||||||
SaBind, SaLambdaSelect
|
SaBind, SaLambdaSelect
|
||||||
from nominatim_core.db.sqlalchemy_types import Geometry
|
from .sql.sqlalchemy_types import Geometry
|
||||||
from .connection import SearchConnection
|
from .connection import SearchConnection
|
||||||
from . import results as nres
|
from . import results as nres
|
||||||
from .logging import log
|
from .logging import log
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import dataclasses
|
|||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from nominatim_core.typing import SaFromClause, SaColumn, SaExpression
|
from ..typing import SaFromClause, SaColumn, SaExpression
|
||||||
from nominatim_core.utils.json_writer import JsonWriter
|
from ..utils.json_writer import JsonWriter
|
||||||
from .query import Token
|
from .query import Token
|
||||||
from . import db_search_lookups as lookups
|
from . import db_search_lookups as lookups
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ from typing import List, Any
|
|||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
from sqlalchemy.ext.compiler import compiles
|
from sqlalchemy.ext.compiler import compiles
|
||||||
|
|
||||||
from nominatim_core.typing import SaFromClause
|
from ..typing import SaFromClause
|
||||||
from nominatim_core.db.sqlalchemy_types import IntArray
|
from ..sql.sqlalchemy_types import IntArray
|
||||||
|
|
||||||
# pylint: disable=consider-using-f-string
|
# pylint: disable=consider-using-f-string
|
||||||
|
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ import abc
|
|||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from nominatim_core.typing import SaFromClause, SaScalarSelect, SaColumn, \
|
from ..typing import SaFromClause, SaScalarSelect, SaColumn, \
|
||||||
SaExpression, SaSelect, SaLambdaSelect, SaRow, SaBind
|
SaExpression, SaSelect, SaLambdaSelect, SaRow, SaBind
|
||||||
from nominatim_core.db.sqlalchemy_types import Geometry, IntArray
|
from ..sql.sqlalchemy_types import Geometry, IntArray
|
||||||
from ..connection import SearchConnection
|
from ..connection import SearchConnection
|
||||||
from ..types import SearchDetails, DataLayer, GeometryFormat, Bbox
|
from ..types import SearchDetails, DataLayer, GeometryFormat, Bbox
|
||||||
from .. import results as nres
|
from .. import results as nres
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ from icu import Transliterator
|
|||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from nominatim_core.typing import SaRow
|
from ..typing import SaRow
|
||||||
from nominatim_core.db.sqlalchemy_types import Json
|
from ..sql.sqlalchemy_types import Json
|
||||||
from ..connection import SearchConnection
|
from ..connection import SearchConnection
|
||||||
from ..logging import log
|
from ..logging import log
|
||||||
from ..search import query as qmod
|
from ..search import query as qmod
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import dataclasses
|
|||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from nominatim_core.typing import SaRow
|
from ..typing import SaRow
|
||||||
from ..connection import SearchConnection
|
from ..connection import SearchConnection
|
||||||
from ..logging import log
|
from ..logging import log
|
||||||
from . import query as qmod
|
from . import query as qmod
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import asyncio
|
|||||||
|
|
||||||
from falcon.asgi import App, Request, Response
|
from falcon.asgi import App, Request, Response
|
||||||
|
|
||||||
from nominatim_core.config import Configuration
|
from ...config import Configuration
|
||||||
from ...core import NominatimAPIAsync
|
from ...core import NominatimAPIAsync
|
||||||
from ... import v1 as api_impl
|
from ... import v1 as api_impl
|
||||||
from ... import logging as loglib
|
from ... import logging as loglib
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ from starlette.middleware import Middleware
|
|||||||
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
|
from starlette.middleware.base import BaseHTTPMiddleware, RequestResponseEndpoint
|
||||||
from starlette.middleware.cors import CORSMiddleware
|
from starlette.middleware.cors import CORSMiddleware
|
||||||
|
|
||||||
from nominatim_core.config import Configuration
|
from ...config import Configuration
|
||||||
from ...core import NominatimAPIAsync
|
from ...core import NominatimAPIAsync
|
||||||
from ... import v1 as api_impl
|
from ... import v1 as api_impl
|
||||||
from ... import logging as loglib
|
from ... import logging as loglib
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from typing import Any
|
|||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
from sqlalchemy.ext.compiler import compiles
|
from sqlalchemy.ext.compiler import compiles
|
||||||
|
|
||||||
from nominatim_core.typing import SaColumn
|
from ..typing import SaColumn
|
||||||
|
|
||||||
# pylint: disable=all
|
# pylint: disable=all
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import dataclasses
|
|||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from .connection import SearchConnection
|
from .connection import SearchConnection
|
||||||
from .version import NOMINATIM_API_VERSION, NominatimVersion, parse_version
|
from .version import NOMINATIM_API_VERSION
|
||||||
|
|
||||||
@dataclasses.dataclass
|
@dataclasses.dataclass
|
||||||
class StatusResult:
|
class StatusResult:
|
||||||
@@ -24,7 +24,7 @@ class StatusResult:
|
|||||||
message: str
|
message: str
|
||||||
software_version = NOMINATIM_API_VERSION
|
software_version = NOMINATIM_API_VERSION
|
||||||
data_updated: Optional[dt.datetime] = None
|
data_updated: Optional[dt.datetime] = None
|
||||||
database_version: Optional[NominatimVersion] = None
|
database_version: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
async def get_status(conn: SearchConnection) -> StatusResult:
|
async def get_status(conn: SearchConnection) -> StatusResult:
|
||||||
@@ -44,7 +44,7 @@ async def get_status(conn: SearchConnection) -> StatusResult:
|
|||||||
|
|
||||||
# Database version
|
# Database version
|
||||||
try:
|
try:
|
||||||
status.database_version = parse_version(await conn.get_property('database_version'))
|
status.database_version = await conn.get_property('database_version')
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import math
|
|||||||
from struct import unpack
|
from struct import unpack
|
||||||
from binascii import unhexlify
|
from binascii import unhexlify
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from .errors import UsageError
|
||||||
from .localization import Locales
|
from .localization import Locales
|
||||||
|
|
||||||
# pylint: disable=no-member,too-many-boolean-expressions,too-many-instance-attributes
|
# pylint: disable=no-member,too-many-boolean-expressions,too-many-instance-attributes
|
||||||
|
|||||||
40
src/nominatim_api/typing.py
Normal file
40
src/nominatim_api/typing.py
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# This file is part of Nominatim. (https://nominatim.org)
|
||||||
|
#
|
||||||
|
# Copyright (C) 2024 by the Nominatim developer community.
|
||||||
|
# For a full list of authors see the git log.
|
||||||
|
"""
|
||||||
|
Type definitions for typing annotations.
|
||||||
|
|
||||||
|
Complex type definitions are moved here, to keep the source files readable.
|
||||||
|
"""
|
||||||
|
from typing import Union, TYPE_CHECKING
|
||||||
|
|
||||||
|
# pylint: disable=missing-class-docstring,useless-import-alias
|
||||||
|
|
||||||
|
# SQLAlchemy introduced generic types in version 2.0 making typing
|
||||||
|
# incompatible with older versions. Add wrappers here so we don't have
|
||||||
|
# to litter the code with bare-string types.
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from typing import Any
|
||||||
|
import sqlalchemy as sa
|
||||||
|
import os
|
||||||
|
from typing_extensions import (TypeAlias as TypeAlias)
|
||||||
|
else:
|
||||||
|
TypeAlias = str
|
||||||
|
|
||||||
|
StrPath = Union[str, 'os.PathLike[str]']
|
||||||
|
|
||||||
|
SaLambdaSelect: TypeAlias = 'Union[sa.Select[Any], sa.StatementLambdaElement]'
|
||||||
|
SaSelect: TypeAlias = 'sa.Select[Any]'
|
||||||
|
SaScalarSelect: TypeAlias = 'sa.ScalarSelect[Any]'
|
||||||
|
SaRow: TypeAlias = 'sa.Row[Any]'
|
||||||
|
SaColumn: TypeAlias = 'sa.ColumnElement[Any]'
|
||||||
|
SaExpression: TypeAlias = 'sa.ColumnElement[bool]'
|
||||||
|
SaLabel: TypeAlias = 'sa.Label[Any]'
|
||||||
|
SaFromClause: TypeAlias = 'sa.FromClause'
|
||||||
|
SaSelectable: TypeAlias = 'sa.Selectable'
|
||||||
|
SaBind: TypeAlias = 'sa.BindParameter[Any]'
|
||||||
|
SaDialect: TypeAlias = 'sa.Dialect'
|
||||||
@@ -11,7 +11,7 @@ from typing import List, Dict, Mapping, Any
|
|||||||
import collections
|
import collections
|
||||||
import datetime as dt
|
import datetime as dt
|
||||||
|
|
||||||
from nominatim_core.utils.json_writer import JsonWriter
|
from ..utils.json_writer import JsonWriter
|
||||||
from ..status import StatusResult
|
from ..status import StatusResult
|
||||||
from ..results import DetailedResult, ReverseResults, SearchResults, \
|
from ..results import DetailedResult, ReverseResults, SearchResults, \
|
||||||
AddressLines, AddressLine
|
AddressLines, AddressLine
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Helper functions for output of results in json formats.
|
|||||||
"""
|
"""
|
||||||
from typing import Mapping, Any, Optional, Tuple, Union
|
from typing import Mapping, Any, Optional, Tuple, Union
|
||||||
|
|
||||||
from nominatim_core.utils.json_writer import JsonWriter
|
from ..utils.json_writer import JsonWriter
|
||||||
from ..results import AddressLines, ReverseResults, SearchResults
|
from ..results import AddressLines, ReverseResults, SearchResults
|
||||||
from . import classtypes as cl
|
from . import classtypes as cl
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ from urllib.parse import urlencode
|
|||||||
|
|
||||||
import sqlalchemy as sa
|
import sqlalchemy as sa
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from .. import logging as loglib
|
from .. import logging as loglib
|
||||||
from ..core import NominatimAPIAsync
|
from ..core import NominatimAPIAsync
|
||||||
from .format import dispatch as formatting
|
from .format import dispatch as formatting
|
||||||
|
|||||||
@@ -8,10 +8,4 @@
|
|||||||
Version information for the Nominatim API.
|
Version information for the Nominatim API.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# See also https://github.com/PyCQA/pylint/issues/6006
|
|
||||||
# pylint: disable=useless-import-alias,unused-import
|
|
||||||
|
|
||||||
from nominatim_core.version import (NominatimVersion as NominatimVersion,
|
|
||||||
parse_version as parse_version)
|
|
||||||
|
|
||||||
NOMINATIM_API_VERSION = '4.4.99'
|
NOMINATIM_API_VERSION = '4.4.99'
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
#
|
|
||||||
# This file is part of Nominatim. (https://nominatim.org)
|
|
||||||
#
|
|
||||||
# Copyright (C) 2024 by the Nominatim developer community.
|
|
||||||
# For a full list of authors see the git log.
|
|
||||||
"""
|
|
||||||
Version information for the Nominatim core package.
|
|
||||||
"""
|
|
||||||
from typing import NamedTuple, Optional
|
|
||||||
|
|
||||||
__version__ = '4.4.99'
|
|
||||||
NOMINATIM_CORE_VERSION = __version__
|
|
||||||
|
|
||||||
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('-')])
|
|
||||||
@@ -16,8 +16,8 @@ import sys
|
|||||||
import argparse
|
import argparse
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from nominatim_core.config import Configuration
|
from .config import Configuration
|
||||||
from nominatim_core.errors import UsageError
|
from .errors import UsageError
|
||||||
from .tools.exec_utils import run_php_server
|
from .tools.exec_utils import run_php_server
|
||||||
from . import clicmd
|
from . import clicmd
|
||||||
from . import version
|
from . import version
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import logging
|
|||||||
import argparse
|
import argparse
|
||||||
import random
|
import random
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from .args import NominatimArgs
|
from .args import NominatimArgs
|
||||||
|
|
||||||
# Do not repeat documentation of subcommand classes.
|
# Do not repeat documentation of subcommand classes.
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ import json
|
|||||||
import sys
|
import sys
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
|
||||||
import nominatim_api as napi
|
import nominatim_api as napi
|
||||||
import nominatim_api.v1 as api_output
|
import nominatim_api.v1 as api_output
|
||||||
from nominatim_api.v1.helpers import zoom_to_rank, deduplicate_results
|
from nominatim_api.v1.helpers import zoom_to_rank, deduplicate_results
|
||||||
from nominatim_api.v1.format import dispatch as formatting
|
from nominatim_api.v1.format import dispatch as formatting
|
||||||
import nominatim_api.logging as loglib
|
import nominatim_api.logging as loglib
|
||||||
|
from ..errors import UsageError
|
||||||
from .args import NominatimArgs
|
from .args import NominatimArgs
|
||||||
|
|
||||||
# Do not repeat documentation of subcommand classes.
|
# Do not repeat documentation of subcommand classes.
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ import argparse
|
|||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.typing import Protocol
|
from ..typing import Protocol
|
||||||
|
|
||||||
LOG = logging.getLogger()
|
LOG = logging.getLogger()
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import argparse
|
|||||||
import asyncio
|
import asyncio
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from .args import NominatimArgs
|
from .args import NominatimArgs
|
||||||
|
|
||||||
# Do not repeat documentation of subcommand classes.
|
# Do not repeat documentation of subcommand classes.
|
||||||
|
|||||||
@@ -14,12 +14,13 @@ import asyncio
|
|||||||
import csv
|
import csv
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import sqlalchemy as sa
|
|
||||||
|
|
||||||
import nominatim_api as napi
|
import nominatim_api as napi
|
||||||
from nominatim_api.results import create_from_placex_row, ReverseResult, add_result_details
|
from nominatim_api.results import create_from_placex_row, ReverseResult, add_result_details
|
||||||
from nominatim_api.types import LookupDetails
|
from nominatim_api.types import LookupDetails
|
||||||
from nominatim_core.errors import UsageError
|
|
||||||
|
import sqlalchemy as sa # pylint: disable=C0411
|
||||||
|
|
||||||
|
from ..errors import UsageError
|
||||||
from .args import NominatimArgs
|
from .args import NominatimArgs
|
||||||
|
|
||||||
# Do not repeat documentation of subcommand classes.
|
# Do not repeat documentation of subcommand classes.
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Implementation of the 'freeze' subcommand.
|
|||||||
"""
|
"""
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from .args import NominatimArgs
|
from .args import NominatimArgs
|
||||||
|
|
||||||
# Do not repeat documentation of subcommand classes.
|
# Do not repeat documentation of subcommand classes.
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import argparse
|
|||||||
|
|
||||||
import psutil
|
import psutil
|
||||||
|
|
||||||
from nominatim_core.db import status
|
from ..db import status
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from .args import NominatimArgs
|
from .args import NominatimArgs
|
||||||
|
|
||||||
# Do not repeat documentation of subcommand classes.
|
# Do not repeat documentation of subcommand classes.
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ import argparse
|
|||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from ..tokenizer.base import AbstractTokenizer
|
from ..tokenizer.base import AbstractTokenizer
|
||||||
from .args import NominatimArgs
|
from .args import NominatimArgs
|
||||||
|
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ import logging
|
|||||||
import socket
|
import socket
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from nominatim_core.db import status
|
from ..db import status
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from .args import NominatimArgs
|
from .args import NominatimArgs
|
||||||
|
|
||||||
LOG = logging.getLogger()
|
LOG = logging.getLogger()
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ from pathlib import Path
|
|||||||
|
|
||||||
import psutil
|
import psutil
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from nominatim_core.db import status, properties
|
from ..db import status, properties
|
||||||
from ..tokenizer.base import AbstractTokenizer
|
from ..tokenizer.base import AbstractTokenizer
|
||||||
from ..version import NOMINATIM_VERSION
|
from ..version import NOMINATIM_VERSION
|
||||||
from .args import NominatimArgs
|
from .args import NominatimArgs
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import argparse
|
|||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from ..tools.special_phrases.sp_importer import SPImporter, SpecialPhraseLoader
|
from ..tools.special_phrases.sp_importer import SPImporter, SpecialPhraseLoader
|
||||||
from ..tools.special_phrases.sp_wiki_loader import SPWikiLoader
|
from ..tools.special_phrases.sp_wiki_loader import SPWikiLoader
|
||||||
from ..tools.special_phrases.sp_csv_loader import SPCsvLoader
|
from ..tools.special_phrases.sp_csv_loader import SPCsvLoader
|
||||||
|
|||||||
@@ -17,7 +17,11 @@ import json
|
|||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
from dotenv import dotenv_values
|
from dotenv import dotenv_values
|
||||||
from psycopg2.extensions import parse_dsn
|
|
||||||
|
try:
|
||||||
|
from psycopg2.extensions import parse_dsn
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
from psycopg.conninfo import conninfo_to_dict as parse_dsn # type: ignore[assignment]
|
||||||
|
|
||||||
from .typing import StrPath
|
from .typing import StrPath
|
||||||
from .errors import UsageError
|
from .errors import UsageError
|
||||||
@@ -11,10 +11,10 @@ from typing import Dict, Any, Iterable, Tuple, Optional, Container, overload
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
|
|
||||||
from nominatim_core.db import utils as db_utils
|
from ..db import utils as db_utils
|
||||||
from nominatim_core.db.connection import connect, Connection
|
from ..db.connection import connect, Connection
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from ..tokenizer.base import AbstractTokenizer
|
from ..tokenizer.base import AbstractTokenizer
|
||||||
|
|
||||||
def _flatten_name_list(names: Any) -> Dict[str, str]:
|
def _flatten_name_list(names: Any) -> Dict[str, str]:
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ format.
|
|||||||
from typing import Any, Mapping, Optional, Set, Match
|
from typing import Any, Mapping, Optional, Set, Match
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from . import country_info
|
from . import country_info
|
||||||
|
|
||||||
class CountryPostcodeMatcher:
|
class CountryPostcodeMatcher:
|
||||||
|
|||||||
14
src/nominatim_db/errors.py
Normal file
14
src/nominatim_db/errors.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
#
|
||||||
|
# This file is part of Nominatim. (https://nominatim.org)
|
||||||
|
#
|
||||||
|
# Copyright (C) 2024 by the Nominatim developer community.
|
||||||
|
# For a full list of authors see the git log.
|
||||||
|
"""
|
||||||
|
Custom exception and error classes for Nominatim.
|
||||||
|
"""
|
||||||
|
|
||||||
|
class UsageError(Exception):
|
||||||
|
""" An error raised because of bad user input. This error will usually
|
||||||
|
not cause a stack trace to be printed unless debugging is enabled.
|
||||||
|
"""
|
||||||
@@ -13,9 +13,9 @@ import time
|
|||||||
|
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
|
|
||||||
from nominatim_core.typing import DictCursorResults
|
from ..typing import DictCursorResults
|
||||||
from nominatim_core.db.async_connection import DBConnection, WorkerPool
|
from ..db.async_connection import DBConnection, WorkerPool
|
||||||
from nominatim_core.db.connection import connect, Connection, Cursor
|
from ..db.connection import connect, Connection, Cursor
|
||||||
from ..tokenizer.base import AbstractTokenizer
|
from ..tokenizer.base import AbstractTokenizer
|
||||||
from .progress import ProgressLogger
|
from .progress import ProgressLogger
|
||||||
from . import runners
|
from . import runners
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ import functools
|
|||||||
from psycopg2 import sql as pysql
|
from psycopg2 import sql as pysql
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
|
|
||||||
from nominatim_core.typing import Query, DictCursorResult, DictCursorResults, Protocol
|
from ..typing import Query, DictCursorResult, DictCursorResults, Protocol
|
||||||
from nominatim_core.db.async_connection import DBConnection
|
from ..db.async_connection import DBConnection
|
||||||
from ..data.place_info import PlaceInfo
|
from ..data.place_info import PlaceInfo
|
||||||
from ..tokenizer.base import AbstractAnalyzer
|
from ..tokenizer.base import AbstractAnalyzer
|
||||||
|
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ from abc import ABC, abstractmethod
|
|||||||
from typing import List, Tuple, Dict, Any, Optional, Iterable
|
from typing import List, Tuple, Dict, Any, Optional, Iterable
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from nominatim_core.typing import Protocol
|
from ..typing import Protocol
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db.connection import Connection
|
from ..db.connection import Connection
|
||||||
from ..data.place_info import PlaceInfo
|
from ..data.place_info import PlaceInfo
|
||||||
|
|
||||||
class AbstractAnalyzer(ABC):
|
class AbstractAnalyzer(ABC):
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ import logging
|
|||||||
import importlib
|
import importlib
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.db import properties
|
from ..db import properties
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from ..tokenizer.base import AbstractTokenizer, TokenizerModule
|
from ..tokenizer.base import AbstractTokenizer, TokenizerModule
|
||||||
|
|
||||||
LOG = logging.getLogger()
|
LOG = logging.getLogger()
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ import logging
|
|||||||
|
|
||||||
from icu import Transliterator
|
from icu import Transliterator
|
||||||
|
|
||||||
from nominatim_core.config import flatten_config_list, Configuration
|
from ..config import flatten_config_list, Configuration
|
||||||
from nominatim_core.db.properties import set_property, get_property
|
from ..db.properties import set_property, get_property
|
||||||
from nominatim_core.db.connection import Connection
|
from ..db.connection import Connection
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from .place_sanitizer import PlaceSanitizer
|
from .place_sanitizer import PlaceSanitizer
|
||||||
from .icu_token_analysis import ICUTokenAnalysis
|
from .icu_token_analysis import ICUTokenAnalysis
|
||||||
from .token_analysis.base import AnalysisModule, Analyzer
|
from .token_analysis.base import AnalysisModule, Analyzer
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ import logging
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
|
|
||||||
from nominatim_core.db.connection import connect, Connection, Cursor
|
from ..db.connection import connect, Connection, Cursor
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db.utils import CopyBuffer
|
from ..db.utils import CopyBuffer
|
||||||
from nominatim_core.db.sql_preprocessor import SQLPreprocessor
|
from ..db.sql_preprocessor import SQLPreprocessor
|
||||||
from ..data.place_info import PlaceInfo
|
from ..data.place_info import PlaceInfo
|
||||||
from ..data.place_name import PlaceName
|
from ..data.place_name import PlaceName
|
||||||
from .icu_rule_loader import ICURuleLoader
|
from .icu_rule_loader import ICURuleLoader
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ from icu import Transliterator
|
|||||||
import psycopg2
|
import psycopg2
|
||||||
import psycopg2.extras
|
import psycopg2.extras
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.db.connection import connect, Connection
|
from ..db.connection import connect, Connection
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db import properties
|
from ..db import properties
|
||||||
from nominatim_core.db import utils as db_utils
|
from ..db import utils as db_utils
|
||||||
from nominatim_core.db.sql_preprocessor import SQLPreprocessor
|
from ..db.sql_preprocessor import SQLPreprocessor
|
||||||
from ..data.place_info import PlaceInfo
|
from ..data.place_info import PlaceInfo
|
||||||
from .base import AbstractAnalyzer, AbstractTokenizer
|
from .base import AbstractAnalyzer, AbstractTokenizer
|
||||||
|
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ is handed to the token analysis.
|
|||||||
"""
|
"""
|
||||||
from typing import Optional, List, Mapping, Sequence, Callable, Any, Tuple
|
from typing import Optional, List, Mapping, Sequence, Callable, Any, Tuple
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from .sanitizers.config import SanitizerConfig
|
from .sanitizers.config import SanitizerConfig
|
||||||
from .sanitizers.base import SanitizerHandler, ProcessInfo
|
from .sanitizers.base import SanitizerHandler, ProcessInfo
|
||||||
from ..data.place_name import PlaceName
|
from ..data.place_name import PlaceName
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Common data types and protocols for sanitizers.
|
|||||||
"""
|
"""
|
||||||
from typing import Optional, List, Mapping, Callable
|
from typing import Optional, List, Mapping, Callable
|
||||||
|
|
||||||
from nominatim_core.typing import Protocol, Final
|
from ...typing import Protocol, Final
|
||||||
from ...data.place_info import PlaceInfo
|
from ...data.place_info import PlaceInfo
|
||||||
from ...data.place_name import PlaceName
|
from ...data.place_name import PlaceName
|
||||||
from .config import SanitizerConfig
|
from .config import SanitizerConfig
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ from typing import Sequence, Union, Optional, Pattern, Callable, Any, TYPE_CHECK
|
|||||||
from collections import UserDict
|
from collections import UserDict
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ...errors import UsageError
|
||||||
|
|
||||||
# working around missing generics in Python < 3.8
|
# working around missing generics in Python < 3.8
|
||||||
# See https://github.com/python/typing/issues/60#issuecomment-869757075
|
# See https://github.com/python/typing/issues/60#issuecomment-869757075
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ Common data types and protocols for analysers.
|
|||||||
"""
|
"""
|
||||||
from typing import Mapping, List, Any
|
from typing import Mapping, List, Any
|
||||||
|
|
||||||
from nominatim_core.typing import Protocol
|
from ...typing import Protocol
|
||||||
from ...data.place_name import PlaceName
|
from ...data.place_name import PlaceName
|
||||||
|
|
||||||
class Analyzer(Protocol):
|
class Analyzer(Protocol):
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ from collections import defaultdict
|
|||||||
import itertools
|
import itertools
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from nominatim_core.config import flatten_config_list
|
from ...config import flatten_config_list
|
||||||
from nominatim_core.errors import UsageError
|
from ...errors import UsageError
|
||||||
|
|
||||||
class ICUVariant(NamedTuple):
|
class ICUVariant(NamedTuple):
|
||||||
""" A single replacement rule for variant creation.
|
""" A single replacement rule for variant creation.
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import itertools
|
|||||||
|
|
||||||
import datrie
|
import datrie
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ...errors import UsageError
|
||||||
from ...data.place_name import PlaceName
|
from ...data.place_name import PlaceName
|
||||||
from .config_variants import get_variant_config
|
from .config_variants import get_variant_config
|
||||||
from .generic_mutation import MutationVariantGenerator
|
from .generic_mutation import MutationVariantGenerator
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import itertools
|
|||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ...errors import UsageError
|
||||||
|
|
||||||
LOG = logging.getLogger()
|
LOG = logging.getLogger()
|
||||||
|
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ from pathlib import Path
|
|||||||
import logging
|
import logging
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from nominatim_core.utils.url_utils import get_url
|
from ..utils.url_utils import get_url
|
||||||
from .exec_utils import run_osm2pgsql
|
from .exec_utils import run_osm2pgsql
|
||||||
|
|
||||||
LOG = logging.getLogger()
|
LOG = logging.getLogger()
|
||||||
|
|||||||
@@ -13,10 +13,10 @@ import logging
|
|||||||
from psycopg2.extras import Json, register_hstore
|
from psycopg2.extras import Json, register_hstore
|
||||||
from psycopg2 import DataError
|
from psycopg2 import DataError
|
||||||
|
|
||||||
from nominatim_core.typing import DictCursorResult
|
from ..typing import DictCursorResult
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db.connection import connect, Cursor
|
from ..db.connection import connect, Cursor
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from ..tokenizer import factory as tokenizer_factory
|
from ..tokenizer import factory as tokenizer_factory
|
||||||
from ..data.place_info import PlaceInfo
|
from ..data.place_info import PlaceInfo
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ from typing import Callable, Optional, Any, Union, Tuple, Mapping, List
|
|||||||
from enum import Enum
|
from enum import Enum
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
|
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db.connection import connect, Connection
|
from ..db.connection import connect, Connection
|
||||||
from nominatim_core.db import properties
|
from ..db import properties
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from ..tokenizer import factory as tokenizer_factory
|
from ..tokenizer import factory as tokenizer_factory
|
||||||
from . import freeze
|
from . import freeze
|
||||||
from ..version import NOMINATIM_VERSION, parse_version
|
from ..version import NOMINATIM_VERSION, parse_version
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ from typing import List, Optional, Tuple, Union
|
|||||||
import psutil
|
import psutil
|
||||||
from psycopg2.extensions import make_dsn, parse_dsn
|
from psycopg2.extensions import make_dsn, parse_dsn
|
||||||
|
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db.connection import connect
|
from ..db.connection import connect
|
||||||
from ..version import NOMINATIM_VERSION
|
from ..version import NOMINATIM_VERSION
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ import sqlalchemy as sa
|
|||||||
|
|
||||||
import nominatim_api as napi
|
import nominatim_api as napi
|
||||||
from nominatim_api.search.query_analyzer_factory import make_query_analyzer
|
from nominatim_api.search.query_analyzer_factory import make_query_analyzer
|
||||||
from nominatim_core.typing import SaSelect, SaRow
|
from nominatim_api.typing import SaSelect, SaRow
|
||||||
from nominatim_core.db.sqlalchemy_types import Geometry, IntArray
|
from nominatim_api.sql.sqlalchemy_types import Geometry, IntArray
|
||||||
|
|
||||||
LOG = logging.getLogger()
|
LOG = logging.getLogger()
|
||||||
|
|
||||||
|
|||||||
@@ -17,11 +17,11 @@ from pathlib import Path
|
|||||||
import psutil
|
import psutil
|
||||||
from psycopg2 import sql as pysql
|
from psycopg2 import sql as pysql
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db.connection import connect, get_pg_env, Connection
|
from ..db.connection import connect, get_pg_env, Connection
|
||||||
from nominatim_core.db.async_connection import DBConnection
|
from ..db.async_connection import DBConnection
|
||||||
from nominatim_core.db.sql_preprocessor import SQLPreprocessor
|
from ..db.sql_preprocessor import SQLPreprocessor
|
||||||
from .exec_utils import run_osm2pgsql
|
from .exec_utils import run_osm2pgsql
|
||||||
from ..version import POSTGRESQL_REQUIRED_VERSION, POSTGIS_REQUIRED_VERSION
|
from ..version import POSTGRESQL_REQUIRED_VERSION, POSTGIS_REQUIRED_VERSION
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import os
|
|||||||
import subprocess
|
import subprocess
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
from nominatim_core.typing import StrPath
|
from ..typing import StrPath
|
||||||
from nominatim_core.db.connection import get_pg_env
|
from ..db.connection import get_pg_env
|
||||||
|
|
||||||
LOG = logging.getLogger()
|
LOG = logging.getLogger()
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ from pathlib import Path
|
|||||||
|
|
||||||
from psycopg2 import sql as pysql
|
from psycopg2 import sql as pysql
|
||||||
|
|
||||||
from nominatim_core.db.connection import Connection
|
from ..db.connection import Connection
|
||||||
|
|
||||||
UPDATE_TABLES = [
|
UPDATE_TABLES = [
|
||||||
'address_levels',
|
'address_levels',
|
||||||
|
|||||||
@@ -12,10 +12,10 @@ import logging
|
|||||||
|
|
||||||
from psycopg2 import sql as pysql
|
from psycopg2 import sql as pysql
|
||||||
|
|
||||||
from nominatim_core.errors import UsageError
|
from ..errors import UsageError
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db import properties
|
from ..db import properties
|
||||||
from nominatim_core.db.connection import connect, Connection
|
from ..db.connection import connect, Connection
|
||||||
from ..version import NominatimVersion, NOMINATIM_VERSION, parse_version
|
from ..version import NominatimVersion, NOMINATIM_VERSION, parse_version
|
||||||
from ..tokenizer import factory as tokenizer_factory
|
from ..tokenizer import factory as tokenizer_factory
|
||||||
from . import refresh
|
from . import refresh
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ from math import isfinite
|
|||||||
|
|
||||||
from psycopg2 import sql as pysql
|
from psycopg2 import sql as pysql
|
||||||
|
|
||||||
from nominatim_core.db.connection import connect, Connection
|
from ..db.connection import connect, Connection
|
||||||
from nominatim_core.utils.centroid import PointsCentroid
|
from ..utils.centroid import PointsCentroid
|
||||||
from ..data.postcode_format import PostcodeFormatter, CountryPostcodeMatcher
|
from ..data.postcode_format import PostcodeFormatter, CountryPostcodeMatcher
|
||||||
from ..tokenizer.base import AbstractAnalyzer, AbstractTokenizer
|
from ..tokenizer.base import AbstractAnalyzer, AbstractTokenizer
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ from pathlib import Path
|
|||||||
|
|
||||||
from psycopg2 import sql as pysql
|
from psycopg2 import sql as pysql
|
||||||
|
|
||||||
from nominatim_core.config import Configuration
|
from ..config import Configuration
|
||||||
from nominatim_core.db.connection import Connection, connect
|
from ..db.connection import Connection, connect
|
||||||
from nominatim_core.db.utils import execute_file, CopyBuffer
|
from ..db.utils import execute_file, CopyBuffer
|
||||||
from nominatim_core.db.sql_preprocessor import SQLPreprocessor
|
from ..db.sql_preprocessor import SQLPreprocessor
|
||||||
from ..version import NOMINATIM_VERSION
|
from ..version import NOMINATIM_VERSION
|
||||||
|
|
||||||
LOG = logging.getLogger()
|
LOG = logging.getLogger()
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user