mirror of
https://github.com/osm-search/Nominatim.git
synced 2024-11-25 19:35:02 +03:00
add Python package configuration
The global configuration builds one large package.
This commit is contained in:
parent
b0067a0345
commit
0fb4fe8e4d
2
.gitignore
vendored
2
.gitignore
vendored
@ -4,6 +4,8 @@
|
|||||||
docs/develop/*.png
|
docs/develop/*.png
|
||||||
|
|
||||||
build
|
build
|
||||||
|
dist
|
||||||
|
.coverage
|
||||||
|
|
||||||
.vagrant
|
.vagrant
|
||||||
data/country_osm_grid.sql.gz
|
data/country_osm_grid.sql.gz
|
||||||
|
4
nominatim/__main__.py
Normal file
4
nominatim/__main__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
if __name__ == '__main__':
|
||||||
|
from nominatim import cli
|
||||||
|
|
||||||
|
exit(cli.nominatim(module_dir=None, osm2pgsql_path=None))
|
@ -83,7 +83,7 @@ class Configuration:
|
|||||||
""" Set paths to library functions and data.
|
""" Set paths to library functions and data.
|
||||||
"""
|
"""
|
||||||
for key, value in kwargs.items():
|
for key, value in kwargs.items():
|
||||||
setattr(self.lib_dir, key, Path(value))
|
setattr(self.lib_dir, key, None if value is None else Path(value))
|
||||||
|
|
||||||
|
|
||||||
def __getattr__(self, name: str) -> str:
|
def __getattr__(self, name: str) -> str:
|
||||||
|
@ -11,6 +11,7 @@ from typing import Any, Mapping, IO
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import shutil
|
||||||
import urllib.request as urlrequest
|
import urllib.request as urlrequest
|
||||||
|
|
||||||
from nominatim.typing import StrPath
|
from nominatim.typing import StrPath
|
||||||
@ -30,7 +31,14 @@ def run_osm2pgsql(options: Mapping[str, Any]) -> None:
|
|||||||
""" Run osm2pgsql with the given options.
|
""" Run osm2pgsql with the given options.
|
||||||
"""
|
"""
|
||||||
env = get_pg_env(options['dsn'])
|
env = get_pg_env(options['dsn'])
|
||||||
cmd = [str(options['osm2pgsql']),
|
|
||||||
|
osm2pgsql_cmd = options['osm2pgsql']
|
||||||
|
if osm2pgsql_cmd is None:
|
||||||
|
osm2pgsql_cmd = shutil.which('osm2pgsql')
|
||||||
|
if osm2pgsql_cmd is None:
|
||||||
|
raise RuntimeError('osm2pgsql executable not found. Please install osm2pgsql first.')
|
||||||
|
|
||||||
|
cmd = [str(osm2pgsql_cmd),
|
||||||
'--slim',
|
'--slim',
|
||||||
'--log-progress', 'true',
|
'--log-progress', 'true',
|
||||||
'--number-processes', '1' if options['append'] else str(options['threads']),
|
'--number-processes', '1' if options['append'] else str(options['threads']),
|
||||||
|
@ -33,6 +33,12 @@ class NominatimVersion(NamedTuple):
|
|||||||
def __str__(self) -> str:
|
def __str__(self) -> str:
|
||||||
return f"{self.major}.{self.minor}.{self.patch_level}-{self.db_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}"
|
||||||
|
|
||||||
NOMINATIM_VERSION = NominatimVersion(4, 4, 99, 1)
|
NOMINATIM_VERSION = NominatimVersion(4, 4, 99, 1)
|
||||||
|
|
||||||
|
61
pyproject.toml
Normal file
61
pyproject.toml
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
[project]
|
||||||
|
name = "nominatim"
|
||||||
|
description = "A tool for building a database of OpenStreetMap for geocoding and for searching the database."
|
||||||
|
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 = [
|
||||||
|
"psycopg2",
|
||||||
|
"python-dotenv",
|
||||||
|
"psutil",
|
||||||
|
"jinja2",
|
||||||
|
"SQLAlchemy>=1.4.31",
|
||||||
|
"asyncpg>=0.8",
|
||||||
|
"PyICU",
|
||||||
|
"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 = "nominatim/version.py"
|
||||||
|
expression = "NOMINATIM_VERSION.release_version()"
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.sdist]
|
||||||
|
only-include = ["nominatim", "lib-sql", "settings",
|
||||||
|
"docs", "man", "data", "munin",
|
||||||
|
"test/python", "test/bdd", "test/testdata", "test/testdb"]
|
||||||
|
artifacts = ["data/country_osm_grid.sql.gz"]
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel]
|
||||||
|
only-include = ["nominatim", "lib-sql", "settings",
|
||||||
|
"data/words.sql", "data/country_osm_grid.sql.gz",
|
||||||
|
"wheel_build/nominatim"]
|
||||||
|
exclude = ["nominatim/paths.py"]
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel.shared-scripts]
|
||||||
|
"wheel_build/shared/scripts" = "/"
|
||||||
|
|
||||||
|
[tool.hatch.build.targets.wheel.sources]
|
||||||
|
"wheel_build/nominatim" = "nominatim"
|
||||||
|
"lib-sql" = "nominatim/resources/lib-sql"
|
||||||
|
"settings" = "nominatim/resources/settings"
|
||||||
|
"data" = "nominatim/resources"
|
15
wheel_build/nominatim/paths.py
Normal file
15
wheel_build/nominatim/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 = (Path(__file__) / '..' / 'resources').resolve()
|
||||||
|
SQLLIB_DIR = (DATA_DIR / 'lib-sql')
|
||||||
|
CONFIG_DIR = (DATA_DIR / 'settings')
|
5
wheel_build/shared/scripts/nominatim
Executable file
5
wheel_build/shared/scripts/nominatim
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!python3
|
||||||
|
|
||||||
|
from nominatim import cli
|
||||||
|
|
||||||
|
exit(cli.nominatim(module_dir=None, osm2pgsql_path=None))
|
Loading…
Reference in New Issue
Block a user