forked from organicmaps/organicmaps
[generator][python] Refactored: moved stages to stages.py
This commit is contained in:
parent
6151c04267
commit
548d4149e4
3 changed files with 99 additions and 96 deletions
|
@ -1,54 +0,0 @@
|
|||
import os
|
||||
import subprocess
|
||||
|
||||
from ..utils.file import download_file, is_verified
|
||||
from ..utils.md5 import write_md5sum, md5
|
||||
from . import settings
|
||||
from .gen_tool import run_gen_tool
|
||||
from .osmtools import osmconvert, osmupdate
|
||||
|
||||
|
||||
def download_planet(planet):
|
||||
download_file(settings.PLANET_URL, planet)
|
||||
download_file(settings.PLANET_MD5_URL, md5(planet))
|
||||
|
||||
|
||||
def convert_planet(tool, in_planet, out_planet, output=subprocess.DEVNULL,
|
||||
error=subprocess.DEVNULL):
|
||||
osmconvert(tool, in_planet, out_planet, output=output, error=error)
|
||||
write_md5sum(out_planet, md5(out_planet))
|
||||
|
||||
|
||||
def stage_download_and_convert_planet(env, **kwargs):
|
||||
if not is_verified(settings.PLANET_PBF):
|
||||
download_planet(settings.PLANET_PBF)
|
||||
|
||||
convert_planet(env[settings.OSM_TOOL_CONVERT],
|
||||
settings.PLANET_PBF, settings.PLANET_O5M,
|
||||
output=env.get_subprocess_out(),
|
||||
error=env.get_subprocess_out())
|
||||
os.remove(settings.PLANET_PBF)
|
||||
os.remove(md5(settings.PLANET_PBF))
|
||||
|
||||
|
||||
def stage_update_planet(env, **kwargs):
|
||||
tmp = settings.PLANET_O5M + ".tmp"
|
||||
osmupdate(env[settings.OSM_TOOL_UPDATE], settings.PLANET_O5M, tmp,
|
||||
output=env.get_subprocess_out(),
|
||||
error=env.get_subprocess_out(),
|
||||
**kwargs)
|
||||
os.remove(settings.PLANET_O5M)
|
||||
os.rename(tmp, settings.PLANET_O5M)
|
||||
write_md5sum(settings.PLANET_O5M, md5(settings.PLANET_O5M))
|
||||
|
||||
|
||||
def stage_preprocess(env, **kwargs):
|
||||
run_gen_tool(env.gen_tool,
|
||||
out=env.get_subprocess_out(),
|
||||
err=env.get_subprocess_out(),
|
||||
intermediate_data_path=env.intermediate_path,
|
||||
osm_file_type="o5m",
|
||||
osm_file_name=settings.PLANET_O5M,
|
||||
node_storage=env.node_storage,
|
||||
preprocess=True,
|
||||
**kwargs)
|
|
@ -1,13 +1,93 @@
|
|||
import logging
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
|
||||
from . import settings
|
||||
from .env import WORLD_NAME, WORLDS_NAMES
|
||||
from .gen_tool import run_gen_tool
|
||||
from .osmtools import osmconvert, osmupdate
|
||||
from ..utils.file import download_file, is_verified
|
||||
from ..utils.file import symlink_force
|
||||
from ..utils.md5 import write_md5sum, md5
|
||||
|
||||
logger = logging.getLogger("maps_generator")
|
||||
|
||||
|
||||
def download_planet(planet):
|
||||
download_file(settings.PLANET_URL, planet)
|
||||
download_file(settings.PLANET_MD5_URL, md5(planet))
|
||||
|
||||
|
||||
def convert_planet(tool, in_planet, out_planet, output=subprocess.DEVNULL,
|
||||
error=subprocess.DEVNULL):
|
||||
osmconvert(tool, in_planet, out_planet, output=output, error=error)
|
||||
write_md5sum(out_planet, md5(out_planet))
|
||||
|
||||
|
||||
def stage_download_and_convert_planet(env, **kwargs):
|
||||
if not is_verified(settings.PLANET_PBF):
|
||||
download_planet(settings.PLANET_PBF)
|
||||
|
||||
convert_planet(env[settings.OSM_TOOL_CONVERT],
|
||||
settings.PLANET_PBF, settings.PLANET_O5M,
|
||||
output=env.get_subprocess_out(),
|
||||
error=env.get_subprocess_out())
|
||||
os.remove(settings.PLANET_PBF)
|
||||
os.remove(md5(settings.PLANET_PBF))
|
||||
|
||||
|
||||
def stage_update_planet(env, **kwargs):
|
||||
tmp = settings.PLANET_O5M + ".tmp"
|
||||
osmupdate(env[settings.OSM_TOOL_UPDATE], settings.PLANET_O5M, tmp,
|
||||
output=env.get_subprocess_out(),
|
||||
error=env.get_subprocess_out(),
|
||||
**kwargs)
|
||||
os.remove(settings.PLANET_O5M)
|
||||
os.rename(tmp, settings.PLANET_O5M)
|
||||
write_md5sum(settings.PLANET_O5M, md5(settings.PLANET_O5M))
|
||||
|
||||
|
||||
def stage_preprocess(env, **kwargs):
|
||||
run_gen_tool(env.gen_tool,
|
||||
out=env.get_subprocess_out(),
|
||||
err=env.get_subprocess_out(),
|
||||
intermediate_data_path=env.intermediate_path,
|
||||
osm_file_type="o5m",
|
||||
osm_file_name=settings.PLANET_O5M,
|
||||
node_storage=env.node_storage,
|
||||
preprocess=True,
|
||||
**kwargs)
|
||||
|
||||
|
||||
def stage_features(env, **kwargs):
|
||||
extra = {}
|
||||
if not env.production:
|
||||
extra["no_ads"] = True
|
||||
if any(x not in WORLDS_NAMES for x in env.countries):
|
||||
extra["split_by_polygons"] = True
|
||||
extra["generate_packed_borders"] = True
|
||||
if any(x == WORLD_NAME for x in env.countries):
|
||||
extra["generate_world"] = True
|
||||
|
||||
run_gen_tool(
|
||||
env.gen_tool,
|
||||
out=env.get_subprocess_out(),
|
||||
err=env.get_subprocess_out(),
|
||||
data_path=env.data_path,
|
||||
intermediate_data_path=env.intermediate_path,
|
||||
osm_file_type="o5m",
|
||||
osm_file_name=settings.PLANET_O5M,
|
||||
node_storage=env.node_storage,
|
||||
user_resource_path=env.user_resource_path,
|
||||
dump_cities_boundaries=True,
|
||||
cities_boundaries_data=env.cities_boundaries_path,
|
||||
generate_features=True,
|
||||
emit_coasts=True,
|
||||
**extra,
|
||||
**kwargs
|
||||
)
|
||||
|
||||
def run_gen_tool_with_recovery_country(env, *args, **kwargs):
|
||||
if "data_path" not in kwargs or "output" not in kwargs:
|
||||
logger.warning("The call run_gen_tool() will be without recovery.")
|
|
@ -17,9 +17,8 @@ from post_generation.hierarchy_to_countries import hierarchy_to_countries
|
|||
from post_generation.inject_promo_cities import inject_promo_cities
|
||||
from post_generation.localads_mwm_to_csv import create_csv
|
||||
|
||||
from .generator import basic_stages
|
||||
from .generator import stages
|
||||
from .generator import coastline
|
||||
from .generator import maps_stages
|
||||
from .generator import settings
|
||||
from .generator.decorators import stage, country_stage, country_stage_log
|
||||
from .generator.env import (planet_lock_file, build_lock_file,
|
||||
|
@ -40,24 +39,24 @@ def download_external(url_to_path: dict):
|
|||
@stage
|
||||
def stage_download_and_convert_planet(env, **kwargs):
|
||||
if not is_verified(settings.PLANET_O5M):
|
||||
basic_stages.stage_download_and_convert_planet(env, **kwargs)
|
||||
stages.stage_download_and_convert_planet(env, **kwargs)
|
||||
|
||||
|
||||
@stage
|
||||
def stage_update_planet(env, **kwargs):
|
||||
if not settings.DEBUG:
|
||||
basic_stages.stage_update_planet(env, **kwargs)
|
||||
stages.stage_update_planet(env, **kwargs)
|
||||
|
||||
|
||||
@stage
|
||||
def stage_download_external(env, **kwargs):
|
||||
def stage_download_external(env):
|
||||
download_external({
|
||||
settings.SUBWAY_URL: env.subway_path,
|
||||
})
|
||||
|
||||
|
||||
@stage
|
||||
def stage_download_production_external(env, **kwargs):
|
||||
def stage_download_production_external(env):
|
||||
download_external({
|
||||
settings.UGC_URL: env.ugc_path,
|
||||
settings.HOTELS_URL: env.hotels_path,
|
||||
|
@ -70,7 +69,7 @@ def stage_download_production_external(env, **kwargs):
|
|||
|
||||
@stage
|
||||
def stage_preprocess(env, **kwargs):
|
||||
basic_stages.stage_preprocess(env, **kwargs)
|
||||
stages.stage_preprocess(env, **kwargs)
|
||||
|
||||
|
||||
@stage
|
||||
|
@ -84,31 +83,8 @@ def stage_features(env):
|
|||
extra["popular_places_data"] = env.popularity_path
|
||||
extra["brands_data"] = env.food_paths
|
||||
extra["brands_translations_data"] = env.food_translations_path
|
||||
if not env.production:
|
||||
extra["no_ads"] = True
|
||||
if any(x not in WORLDS_NAMES for x in env.countries):
|
||||
extra["split_by_polygons"] = True
|
||||
extra["generate_packed_borders"] = True
|
||||
if any(x == WORLD_NAME for x in env.countries):
|
||||
extra["generate_world"] = True
|
||||
|
||||
run_gen_tool(
|
||||
env.gen_tool,
|
||||
out=env.get_subprocess_out(),
|
||||
err=env.get_subprocess_out(),
|
||||
data_path=env.data_path,
|
||||
intermediate_data_path=env.intermediate_path,
|
||||
osm_file_type="o5m",
|
||||
osm_file_name=settings.PLANET_O5M,
|
||||
node_storage=env.node_storage,
|
||||
user_resource_path=env.user_resource_path,
|
||||
dump_cities_boundaries=True,
|
||||
cities_boundaries_data=env.cities_boundaries_path,
|
||||
generate_features=True,
|
||||
emit_coasts=True,
|
||||
**extra
|
||||
)
|
||||
|
||||
|
||||
stages.stage_features(env, **extra)
|
||||
if os.path.exists(env.packed_polygons_path):
|
||||
shutil.copy2(env.packed_polygons_path, env.mwm_path)
|
||||
|
||||
|
@ -136,36 +112,36 @@ def stage_coastline(env):
|
|||
@country_stage
|
||||
def stage_index(env, country, **kwargs):
|
||||
if country == WORLD_NAME:
|
||||
maps_stages.stage_index_world(env, country, **kwargs)
|
||||
stages.stage_index_world(env, country, **kwargs)
|
||||
elif country == WORLD_COASTS_NAME:
|
||||
maps_stages.stage_coastline_index(env, country, **kwargs)
|
||||
stages.stage_coastline_index(env, country, **kwargs)
|
||||
else:
|
||||
maps_stages.stage_index(env, country, **kwargs)
|
||||
stages.stage_index(env, country, **kwargs)
|
||||
|
||||
|
||||
@country_stage
|
||||
def stage_ugc(env, country, **kwargs):
|
||||
maps_stages.stage_ugc(env, country, **kwargs)
|
||||
stages.stage_ugc(env, country, **kwargs)
|
||||
|
||||
|
||||
@country_stage
|
||||
def stage_popularity(env, country, **kwargs):
|
||||
maps_stages.stage_popularity(env, country, **kwargs)
|
||||
stages.stage_popularity(env, country, **kwargs)
|
||||
|
||||
|
||||
@country_stage
|
||||
def stage_srtm(env, country, **kwargs):
|
||||
maps_stages.stage_srtm(env, country, **kwargs)
|
||||
stages.stage_srtm(env, country, **kwargs)
|
||||
|
||||
|
||||
@country_stage
|
||||
def stage_routing(env, country, **kwargs):
|
||||
maps_stages.stage_routing(env, country, **kwargs)
|
||||
stages.stage_routing(env, country, **kwargs)
|
||||
|
||||
|
||||
@country_stage
|
||||
def stage_routing_transit(env, country, **kwargs):
|
||||
maps_stages.stage_routing_transit(env, country, **kwargs)
|
||||
stages.stage_routing_transit(env, country, **kwargs)
|
||||
|
||||
|
||||
@stage
|
||||
|
@ -217,7 +193,7 @@ def stage_descriptions(env):
|
|||
|
||||
@country_stage_log
|
||||
def stage_write_descriptions(env, country, **kwargs):
|
||||
maps_stages.run_gen_tool_with_recovery_country(
|
||||
stages.run_gen_tool_with_recovery_country(
|
||||
env,
|
||||
env.gen_tool,
|
||||
out=env.get_subprocess_out(country),
|
||||
|
@ -285,6 +261,7 @@ def stage_localads(env):
|
|||
for filename in os.listdir(env.localads_path):
|
||||
tar.add(os.path.join(env.localads_path, filename), arcname=filename)
|
||||
|
||||
|
||||
@stage
|
||||
def stage_statistics(env):
|
||||
result = defaultdict(lambda: defaultdict(dict))
|
||||
|
@ -293,7 +270,7 @@ def stage_statistics(env):
|
|||
def stage_mwm_statistics(env, country, **kwargs):
|
||||
stats_tmp = os.path.join(env.draft_path, f"{country}.stat")
|
||||
with open(stats_tmp, "w") as f:
|
||||
maps_stages.run_gen_tool_with_recovery_country(
|
||||
stages.run_gen_tool_with_recovery_country(
|
||||
env,
|
||||
env.gen_tool,
|
||||
out=f,
|
||||
|
|
Loading…
Add table
Reference in a new issue