mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-03-12 05:44:06 +00:00
remove remaining references to php code
This commit is contained in:
@@ -9,7 +9,6 @@ Path settings for extra data used by Nominatim (installed version).
|
|||||||
"""
|
"""
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
PHPLIB_DIR = None
|
|
||||||
SQLLIB_DIR = (Path('@NOMINATIM_LIBDIR@') / 'lib-sql').resolve()
|
SQLLIB_DIR = (Path('@NOMINATIM_LIBDIR@') / 'lib-sql').resolve()
|
||||||
DATA_DIR = Path('@NOMINATIM_DATADIR@').resolve()
|
DATA_DIR = Path('@NOMINATIM_DATADIR@').resolve()
|
||||||
CONFIG_DIR = Path('@NOMINATIM_CONFIGDIR@').resolve()
|
CONFIG_DIR = Path('@NOMINATIM_CONFIGDIR@').resolve()
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ Path settings for extra data used by Nominatim.
|
|||||||
"""
|
"""
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
PHPLIB_DIR = None
|
|
||||||
DATA_DIR = None
|
DATA_DIR = None
|
||||||
SQLLIB_DIR = None
|
SQLLIB_DIR = None
|
||||||
CONFIG_DIR = (Path(__file__) / '..' / 'resources' / 'settings').resolve()
|
CONFIG_DIR = (Path(__file__) / '..' / 'resources' / 'settings').resolve()
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ Path settings for extra data used by Nominatim.
|
|||||||
"""
|
"""
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
PHPLIB_DIR = None
|
|
||||||
DATA_DIR = (Path(__file__) / '..' / 'resources').resolve()
|
DATA_DIR = (Path(__file__) / '..' / 'resources').resolve()
|
||||||
SQLLIB_DIR = (DATA_DIR / 'lib-sql')
|
SQLLIB_DIR = (DATA_DIR / 'lib-sql')
|
||||||
CONFIG_DIR = (DATA_DIR / 'settings')
|
CONFIG_DIR = (DATA_DIR / 'settings')
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ from pathlib import Path
|
|||||||
|
|
||||||
from .config import Configuration
|
from .config import Configuration
|
||||||
from .errors import UsageError
|
from .errors import UsageError
|
||||||
from .tools.exec_utils import run_php_server
|
|
||||||
from . import clicmd
|
from . import clicmd
|
||||||
from . import version
|
from . import version
|
||||||
from .clicmd.args import NominatimArgs, Subcommand
|
from .clicmd.args import NominatimArgs, Subcommand
|
||||||
@@ -154,10 +153,10 @@ class AdminServe:
|
|||||||
from the current project directory. This webserver is only suitable
|
from the current project directory. This webserver is only suitable
|
||||||
for testing and development. Do not use it in production setups!
|
for testing and development. Do not use it in production setups!
|
||||||
|
|
||||||
There are different webservers available. The default 'php' engine
|
There are two different webserver implementations for Python available:
|
||||||
runs the classic PHP frontend. The other engines are Python servers
|
falcon (the default) and starlette. You need to make sure the
|
||||||
which run the new Python frontend code. This is highly experimental
|
appropriate Python packages as well as the uvicorn package are
|
||||||
at the moment and may not include the full API.
|
installed to use this function.
|
||||||
|
|
||||||
By the default, the webserver can be accessed at: http://127.0.0.1:8088
|
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',
|
group.add_argument('--server', default='127.0.0.1:8088',
|
||||||
help='The address the server will listen to.')
|
help='The address the server will listen to.')
|
||||||
group.add_argument('--engine', default='falcon',
|
group.add_argument('--engine', default='falcon',
|
||||||
choices=('php', 'falcon', 'starlette'),
|
choices=('falcon', 'starlette'),
|
||||||
help='Webserver framework to run. (default: falcon)')
|
help='Webserver framework to run. (default: falcon)')
|
||||||
|
|
||||||
|
|
||||||
def run(self, args: NominatimArgs) -> int:
|
def run(self, args: NominatimArgs) -> int:
|
||||||
if args.engine == 'php':
|
asyncio.run(self.run_uvicorn(args))
|
||||||
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))
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ class Configuration:
|
|||||||
class _LibDirs:
|
class _LibDirs:
|
||||||
module: Path
|
module: Path
|
||||||
osm2pgsql: Path
|
osm2pgsql: Path
|
||||||
php = paths.PHPLIB_DIR
|
|
||||||
sql = paths.SQLLIB_DIR
|
sql = paths.SQLLIB_DIR
|
||||||
data = paths.DATA_DIR
|
data = paths.DATA_DIR
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
This module provides the functions to create and configure a new tokenizer
|
||||||
as well as instantiating the appropriate tokenizer for updating an existing
|
as well as instantiating the appropriate tokenizer for updating an existing
|
||||||
database.
|
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
|
from typing import Optional
|
||||||
import logging
|
import logging
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ from typing import Optional, Sequence, List, Tuple, Mapping, Any, cast, \
|
|||||||
import itertools
|
import itertools
|
||||||
import logging
|
import logging
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from textwrap import dedent
|
|
||||||
|
|
||||||
from psycopg.types.json import Jsonb
|
from psycopg.types.json import Jsonb
|
||||||
from psycopg import sql as pysql
|
from psycopg import sql as pysql
|
||||||
@@ -64,7 +63,6 @@ class ICUTokenizer(AbstractTokenizer):
|
|||||||
"""
|
"""
|
||||||
self.loader = ICURuleLoader(config)
|
self.loader = ICURuleLoader(config)
|
||||||
|
|
||||||
self._install_php(config.lib_dir.php, overwrite=True)
|
|
||||||
self._save_config()
|
self._save_config()
|
||||||
|
|
||||||
if init_db:
|
if init_db:
|
||||||
@@ -81,8 +79,6 @@ class ICUTokenizer(AbstractTokenizer):
|
|||||||
with connect(self.dsn) as conn:
|
with connect(self.dsn) as conn:
|
||||||
self.loader.load_config_from_db(conn)
|
self.loader.load_config_from_db(conn)
|
||||||
|
|
||||||
self._install_php(config.lib_dir.php, overwrite=False)
|
|
||||||
|
|
||||||
|
|
||||||
def finalize_import(self, config: Configuration) -> None:
|
def finalize_import(self, config: Configuration) -> None:
|
||||||
""" Do any required postprocessing to make the tokenizer data ready
|
""" 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)
|
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"""\
|
|
||||||
<?php
|
|
||||||
@define('CONST_Max_Word_Frequency', 10000000);
|
|
||||||
@define('CONST_Term_Normalization_Rules', "{self.loader.normalization_rules}");
|
|
||||||
@define('CONST_Transliteration', "{self.loader.get_search_rules()}");
|
|
||||||
require_once('{phpdir}/tokenizer/icu_tokenizer.php');"""), encoding='utf-8')
|
|
||||||
|
|
||||||
|
|
||||||
def _save_config(self) -> None:
|
def _save_config(self) -> None:
|
||||||
""" Save the configuration that needs to remain stable for the given
|
""" Save the configuration that needs to remain stable for the given
|
||||||
database as database properties.
|
database as database properties.
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import logging
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
from textwrap import dedent
|
|
||||||
|
|
||||||
from icu import Transliterator
|
from icu import Transliterator
|
||||||
import psycopg
|
import psycopg
|
||||||
@@ -120,8 +119,6 @@ class LegacyTokenizer(AbstractTokenizer):
|
|||||||
|
|
||||||
self.normalization = config.TERM_NORMALIZATION
|
self.normalization = config.TERM_NORMALIZATION
|
||||||
|
|
||||||
self._install_php(config, overwrite=True)
|
|
||||||
|
|
||||||
with connect(self.dsn) as conn:
|
with connect(self.dsn) as conn:
|
||||||
_check_module(module_dir, conn)
|
_check_module(module_dir, conn)
|
||||||
self._save_config(conn, config)
|
self._save_config(conn, config)
|
||||||
@@ -145,8 +142,6 @@ class LegacyTokenizer(AbstractTokenizer):
|
|||||||
config.lib_dir.module,
|
config.lib_dir.module,
|
||||||
config.project_dir / 'module')
|
config.project_dir / 'module')
|
||||||
|
|
||||||
self._install_php(config, overwrite=False)
|
|
||||||
|
|
||||||
def finalize_import(self, config: Configuration) -> None:
|
def finalize_import(self, config: Configuration) -> None:
|
||||||
""" Do any required postprocessing to make the tokenizer data ready
|
""" Do any required postprocessing to make the tokenizer data ready
|
||||||
for use.
|
for use.
|
||||||
@@ -272,21 +267,6 @@ class LegacyTokenizer(AbstractTokenizer):
|
|||||||
return list(s[0] for s in cur)
|
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"""\
|
|
||||||
<?php
|
|
||||||
@define('CONST_Max_Word_Frequency', {config.MAX_WORD_FREQUENCY});
|
|
||||||
@define('CONST_Term_Normalization_Rules', "{config.TERM_NORMALIZATION}");
|
|
||||||
require_once('{config.lib_dir.php}/tokenizer/legacy_tokenizer.php');
|
|
||||||
"""), encoding='utf-8')
|
|
||||||
|
|
||||||
|
|
||||||
def _init_db_tables(self, config: Configuration) -> None:
|
def _init_db_tables(self, config: Configuration) -> None:
|
||||||
""" Set up the word table and fill it with pre-computed word
|
""" Set up the word table and fill it with pre-computed word
|
||||||
frequencies.
|
frequencies.
|
||||||
|
|||||||
@@ -14,19 +14,12 @@ import re
|
|||||||
import subprocess
|
import subprocess
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
from ..typing import StrPath
|
|
||||||
from ..db.connection import get_pg_env
|
from ..db.connection import get_pg_env
|
||||||
from ..errors import UsageError
|
from ..errors import UsageError
|
||||||
from ..version import OSM2PGSQL_REQUIRED_VERSION
|
from ..version import OSM2PGSQL_REQUIRED_VERSION
|
||||||
|
|
||||||
LOG = logging.getLogger()
|
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:
|
def run_osm2pgsql(options: Mapping[str, Any]) -> None:
|
||||||
""" Run osm2pgsql with the given options.
|
""" Run osm2pgsql with the given options.
|
||||||
|
|||||||
@@ -37,15 +37,6 @@ def test_cli_version(cli_call, capsys):
|
|||||||
assert captured.out.startswith('Nominatim version')
|
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:
|
class TestCliWithDb:
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user