From 7717bbf59d711d21818c89309dbe08e00b16250f Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Sun, 15 Sep 2024 15:33:59 +0200 Subject: [PATCH] remove remaining references to php code --- cmake/paths-py-no-php.tmpl | 1 - packaging/nominatim-api/extra_src/paths.py | 1 - .../extra_src/nominatim_db/paths.py | 1 - src/nominatim_db/cli.py | 20 ++++++------------- src/nominatim_db/config.py | 1 - src/nominatim_db/tokenizer/factory.py | 3 --- src/nominatim_db/tokenizer/icu_tokenizer.py | 20 ------------------- .../tokenizer/legacy_tokenizer.py | 20 ------------------- src/nominatim_db/tools/exec_utils.py | 7 ------- test/python/cli/test_cli.py | 9 --------- 10 files changed, 6 insertions(+), 77 deletions(-) diff --git a/cmake/paths-py-no-php.tmpl b/cmake/paths-py-no-php.tmpl index 36856bf3..a95cb664 100644 --- a/cmake/paths-py-no-php.tmpl +++ b/cmake/paths-py-no-php.tmpl @@ -9,7 +9,6 @@ Path settings for extra data used by Nominatim (installed version). """ from pathlib import Path -PHPLIB_DIR = None SQLLIB_DIR = (Path('@NOMINATIM_LIBDIR@') / 'lib-sql').resolve() DATA_DIR = Path('@NOMINATIM_DATADIR@').resolve() CONFIG_DIR = Path('@NOMINATIM_CONFIGDIR@').resolve() diff --git a/packaging/nominatim-api/extra_src/paths.py b/packaging/nominatim-api/extra_src/paths.py index 6131319c..797acbb5 100644 --- a/packaging/nominatim-api/extra_src/paths.py +++ b/packaging/nominatim-api/extra_src/paths.py @@ -9,7 +9,6 @@ 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() diff --git a/packaging/nominatim-db/extra_src/nominatim_db/paths.py b/packaging/nominatim-db/extra_src/nominatim_db/paths.py index 2294834f..796ff08b 100644 --- a/packaging/nominatim-db/extra_src/nominatim_db/paths.py +++ b/packaging/nominatim-db/extra_src/nominatim_db/paths.py @@ -9,7 +9,6 @@ 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') diff --git a/src/nominatim_db/cli.py b/src/nominatim_db/cli.py index 9fd439f8..9a54f338 100644 --- a/src/nominatim_db/cli.py +++ b/src/nominatim_db/cli.py @@ -19,7 +19,6 @@ from pathlib import Path from .config import Configuration from .errors import UsageError -from .tools.exec_utils import run_php_server from . import clicmd from . import version from .clicmd.args import NominatimArgs, Subcommand @@ -154,10 +153,10 @@ class AdminServe: from the current project directory. This webserver is only suitable for testing and development. Do not use it in production setups! - There are different webservers available. The default 'php' engine - runs the classic PHP frontend. The other engines are Python servers - which run the new Python frontend code. This is highly experimental - at the moment and may not include the full API. + There are two different webserver implementations for Python available: + falcon (the default) and starlette. You need to make sure the + appropriate Python packages as well as the uvicorn package are + installed to use this function. By the default, the webserver can be accessed at: http://127.0.0.1:8088 """ @@ -167,19 +166,12 @@ class AdminServe: group.add_argument('--server', default='127.0.0.1:8088', help='The address the server will listen to.') group.add_argument('--engine', default='falcon', - choices=('php', 'falcon', 'starlette'), + choices=('falcon', 'starlette'), help='Webserver framework to run. (default: falcon)') def run(self, args: NominatimArgs) -> int: - if args.engine == 'php': - if args.config.lib_dir.php is None: - raise UsageError("PHP frontend not configured.") - LOG.warning('\n\nWARNING: the PHP frontend is deprecated ' - 'and will be removed in Nominatim 5.0.\n\n') - run_php_server(args.server, args.project_dir / 'website') - else: - asyncio.run(self.run_uvicorn(args)) + asyncio.run(self.run_uvicorn(args)) return 0 diff --git a/src/nominatim_db/config.py b/src/nominatim_db/config.py index 357cc9d7..a34ec944 100644 --- a/src/nominatim_db/config.py +++ b/src/nominatim_db/config.py @@ -74,7 +74,6 @@ class Configuration: class _LibDirs: module: Path osm2pgsql: Path - php = paths.PHPLIB_DIR sql = paths.SQLLIB_DIR data = paths.DATA_DIR diff --git a/src/nominatim_db/tokenizer/factory.py b/src/nominatim_db/tokenizer/factory.py index b9022d8d..5003c322 100644 --- a/src/nominatim_db/tokenizer/factory.py +++ b/src/nominatim_db/tokenizer/factory.py @@ -15,9 +15,6 @@ be used consistently when querying and updating the database. This module provides the functions to create and configure a new tokenizer as well as instantiating the appropriate tokenizer for updating an existing database. - -A tokenizer usually also includes PHP code for querying. The appropriate PHP -normalizer module is installed, when the tokenizer is created. """ from typing import Optional import logging diff --git a/src/nominatim_db/tokenizer/icu_tokenizer.py b/src/nominatim_db/tokenizer/icu_tokenizer.py index 7cd96d59..1b95a901 100644 --- a/src/nominatim_db/tokenizer/icu_tokenizer.py +++ b/src/nominatim_db/tokenizer/icu_tokenizer.py @@ -13,7 +13,6 @@ from typing import Optional, Sequence, List, Tuple, Mapping, Any, cast, \ import itertools import logging from pathlib import Path -from textwrap import dedent from psycopg.types.json import Jsonb from psycopg import sql as pysql @@ -64,7 +63,6 @@ class ICUTokenizer(AbstractTokenizer): """ self.loader = ICURuleLoader(config) - self._install_php(config.lib_dir.php, overwrite=True) self._save_config() if init_db: @@ -81,8 +79,6 @@ class ICUTokenizer(AbstractTokenizer): with connect(self.dsn) as conn: self.loader.load_config_from_db(conn) - self._install_php(config.lib_dir.php, overwrite=False) - def finalize_import(self, config: Configuration) -> None: """ Do any required postprocessing to make the tokenizer data ready @@ -281,22 +277,6 @@ class ICUTokenizer(AbstractTokenizer): return list(s[0].split('@')[0] for s in cur) - def _install_php(self, phpdir: Optional[Path], overwrite: bool = True) -> None: - """ Install the php script for the tokenizer. - """ - if phpdir is not None: - assert self.loader is not None - php_file = self.data_dir / "tokenizer.php" - - if not php_file.exists() or overwrite: - php_file.write_text(dedent(f"""\ - None: """ Save the configuration that needs to remain stable for the given database as database properties. diff --git a/src/nominatim_db/tokenizer/legacy_tokenizer.py b/src/nominatim_db/tokenizer/legacy_tokenizer.py index 04b7b881..78805332 100644 --- a/src/nominatim_db/tokenizer/legacy_tokenizer.py +++ b/src/nominatim_db/tokenizer/legacy_tokenizer.py @@ -14,7 +14,6 @@ import logging from pathlib import Path import re import shutil -from textwrap import dedent from icu import Transliterator import psycopg @@ -120,8 +119,6 @@ class LegacyTokenizer(AbstractTokenizer): self.normalization = config.TERM_NORMALIZATION - self._install_php(config, overwrite=True) - with connect(self.dsn) as conn: _check_module(module_dir, conn) self._save_config(conn, config) @@ -145,8 +142,6 @@ class LegacyTokenizer(AbstractTokenizer): config.lib_dir.module, config.project_dir / 'module') - self._install_php(config, overwrite=False) - def finalize_import(self, config: Configuration) -> None: """ Do any required postprocessing to make the tokenizer data ready for use. @@ -272,21 +267,6 @@ class LegacyTokenizer(AbstractTokenizer): return list(s[0] for s in cur) - def _install_php(self, config: Configuration, overwrite: bool = True) -> None: - """ Install the php script for the tokenizer. - """ - if config.lib_dir.php is not None: - php_file = self.data_dir / "tokenizer.php" - - if not php_file.exists() or overwrite: - php_file.write_text(dedent(f"""\ - None: """ Set up the word table and fill it with pre-computed word frequencies. diff --git a/src/nominatim_db/tools/exec_utils.py b/src/nominatim_db/tools/exec_utils.py index 1adcc777..4cbbf95d 100644 --- a/src/nominatim_db/tools/exec_utils.py +++ b/src/nominatim_db/tools/exec_utils.py @@ -14,19 +14,12 @@ import re import subprocess import shutil -from ..typing import StrPath from ..db.connection import get_pg_env from ..errors import UsageError from ..version import OSM2PGSQL_REQUIRED_VERSION LOG = logging.getLogger() -def run_php_server(server_address: str, base_dir: StrPath) -> None: - """ Run the built-in server from the given directory. - """ - subprocess.run(['/usr/bin/env', 'php', '-S', server_address], - cwd=str(base_dir), check=True) - def run_osm2pgsql(options: Mapping[str, Any]) -> None: """ Run osm2pgsql with the given options. diff --git a/test/python/cli/test_cli.py b/test/python/cli/test_cli.py index 2831f84f..d42df50a 100644 --- a/test/python/cli/test_cli.py +++ b/test/python/cli/test_cli.py @@ -37,15 +37,6 @@ def test_cli_version(cli_call, capsys): assert captured.out.startswith('Nominatim version') -def test_cli_serve_php(cli_call, mock_func_factory): - func = mock_func_factory(nominatim_db.cli, 'run_php_server') - - cli_call('serve', '--engine', 'php') == 0 - - assert func.called == 1 - - - class TestCliWithDb: @pytest.fixture(autouse=True) -- 2.39.5