# -*- coding: utf-8 -*-
from quetzal.model import analysismodel, docmodel, plotmodel
import warnings
from functools import wraps
import shutil
import ntpath
import uuid
[docs]def deprecated_method(method):
@wraps(method)
def decorated(self, *args, **kwargs):
message = 'Deprecated: replaced by %s' % method.__name__
warnings.warn(
message,
DeprecationWarning
)
print(message)
return method(self, *args, **kwargs)
decorated.__doc__ = 'deprecated! ' + str(decorated.__doc__)
return decorated
[docs]def read_hdf(filepath, *args, **kwargs):
m = StepModel(hdf_database=filepath, *args, **kwargs)
return m
[docs]def read_zip(filepath, *args, **kwargs):
try:
m = StepModel(zip_database=filepath, *args, **kwargs)
return m
except :
# the zip is a zipped hdf and can not be decompressed
return read_zipped_hdf(filepath, *args, **kwargs)
[docs]def read_zipped_hdf(filepath, *args, **kwargs):
filedir = ntpath.dirname(filepath)
tempdir = filedir + '/quetzal_temp' + '-' + str(uuid.uuid4())
shutil.unpack_archive(filepath, tempdir)
m = read_hdf(tempdir + r'/model.hdf', *args, **kwargs)
shutil.rmtree(tempdir)
return m
[docs]def read_json(folder):
m = StepModel(json_folder=folder)
return m
[docs]def read_zippedpickles(folder, *args, **kwarg):
m = StepModel(zippedpickles_folder=folder, *args, **kwarg)
return m
[docs]class StepModel(
plotmodel.PlotModel,
analysismodel.AnalysisModel,
docmodel.DocModel,
):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# DEPRECATION
# deprecation method will be replaced by other data flow
StepModel.step_modal_split = deprecated_method(StepModel.step_modal_split)
StepModel.step_pathfinder = deprecated_method(StepModel.step_pathfinder)
# moved to analysismodel
StepModel.checkpoints = deprecated_method(StepModel.analysis_checkpoints)
StepModel.step_desire = deprecated_method(StepModel.analysis_desire)
StepModel.linear_solver = deprecated_method(StepModel.analysis_linear_solver)
StepModel.step_analysis = deprecated_method(StepModel.analysis_summary)
StepModel.build_lines = deprecated_method(StepModel.analysis_lines)
# moved to preparationmodel
StepModel.step_footpaths = deprecated_method(StepModel.preparation_footpaths)
StepModel.step_ntlegs = deprecated_method(StepModel.preparation_ntlegs)
StepModel.step_cast_network = deprecated_method(
StepModel.preparation_cast_network)
StepModel.renumber_nodes = deprecated_method(
StepModel.preparation_clusterize_nodes)
StepModel.renumber = deprecated_method(StepModel.preparation_clusterize_zones)
# moved to integritymodel integrity_test
StepModel.assert_convex_road_digraph = deprecated_method(
StepModel.integrity_test_isolated_roads)
StepModel.assert_lines_integrity = deprecated_method(
StepModel.integrity_test_sequences)
StepModel.assert_no_circular_lines = deprecated_method(
StepModel.integrity_test_circular_lines)
StepModel.assert_no_collision = deprecated_method(
StepModel.integrity_test_collision)
StepModel.assert_no_dead_ends = deprecated_method(
StepModel.integrity_test_dead_ends)
StepModel.assert_nodeset_consistency = deprecated_method(
StepModel.integrity_test_nodeset_consistency)
# moved to integritymodel integrity_fix
StepModel.add_type_prefixes = deprecated_method(
StepModel.integrity_fix_collision)
StepModel.get_lines_integrity = deprecated_method(
StepModel.integrity_fix_sequences)
StepModel.get_no_circular_lines = deprecated_method(
StepModel.integrity_fix_circular_lines)
StepModel.get_no_collision = deprecated_method(
StepModel.integrity_fix_collision)
StepModel.clean_road_network = deprecated_method(
StepModel.integrity_fix_road_network)
# renamed