def test_resolve_requirements_arg(): requirements = Requirements([ InstallableRequirement('dumb', '0.4.1'), InstallableRequirement('art', '4.0') ]) actual_reqs = resolve_requirements(requirements) assert actual_reqs == requirements
def test_resolve_requirement_list_arg(): req = [ InstallableRequirement('dumb', '0.4.1'), InstallableRequirement('art', '4.0') ] actual_reqs = resolve_requirements(req) assert len(actual_reqs.installable) == 2 assert actual_reqs.installable == req
def create(cls, model_object, input_data, model_name: str = None, additional_artifacts: ArtifactCollection = None, additional_requirements: AnyRequirements = None, custom_wrapper: ModelWrapper = None, custom_artifact: ArtifactCollection = None, custom_input_meta: DatasetType = None, custom_output_meta: DatasetType = None, custom_prediction=None, custom_requirements: AnyRequirements = None) -> 'Model': """ Creates Model instance from arbitrary model objects and sample of input data :param model_object: The model object to analyze. :param input_data: The image to run. :param model_name: The model name. :param additional_artifacts: Additional artifact. :param additional_requirements: Additional requirements. :param custom_wrapper: Custom model wrapper. :param custom_artifact: Custom artifact collection to replace all other. :param custom_input_meta: Custom input DatasetType. :param custom_output_meta: Custom output DatasetType. :param custom_prediction: Custom prediction output. :param custom_requirements: Custom requirements to replace all other. :returns: :py:class:`Model` """ wrapper: ModelWrapper = custom_wrapper or ModelAnalyzer.analyze( model_object) name = model_name or _generate_model_name(wrapper) artifact = custom_artifact or WrapperArtifactCollection(wrapper) if additional_artifacts is not None: artifact += additional_artifacts input_meta = custom_input_meta or DatasetAnalyzer.analyze(input_data) prediction = custom_prediction or wrapper.predict(input_data) output_meta = custom_output_meta or DatasetAnalyzer.analyze(prediction) if custom_requirements is not None: requirements = resolve_requirements(custom_requirements) else: requirements = get_object_requirements(model_object) requirements += get_object_requirements(input_data) requirements += get_object_requirements(prediction) if additional_requirements is not None: requirements += additional_requirements model = Model(name, wrapper, None, input_meta, output_meta, requirements) model._unpersisted_artifacts = artifact return model
def create(cls, model_object, input_data, model_name: str = None, params: Dict[str, Any] = None, description: str = None, additional_artifacts: ArtifactCollection = None, additional_requirements: AnyRequirements = None, custom_wrapper: ModelWrapper = None, custom_artifact: ArtifactCollection = None, custom_requirements: AnyRequirements = None) -> 'Model': """ Creates Model instance from arbitrary model objects and sample of input data :param model_object: The model object to analyze. :param input_data: Input data sample to determine structure of inputs and outputs for given model object. :param model_name: The model name. :param params: dict with arbitrary parameters. Must be json-serializable :param description: text description of this model :param additional_artifacts: Additional artifact. :param additional_requirements: Additional requirements. :param custom_wrapper: Custom model wrapper. :param custom_artifact: Custom artifact collection to replace all other. :param custom_requirements: Custom requirements to replace all other. :returns: :py:class:`Model` """ wrapper: ModelWrapper = custom_wrapper or ModelAnalyzer.analyze( model_object, input_data=input_data) name = model_name or _generate_model_name(wrapper) artifact = custom_artifact or WrapperArtifactCollection(wrapper) if additional_artifacts is not None: artifact += additional_artifacts if custom_requirements is not None: requirements = resolve_requirements(custom_requirements) else: requirements = wrapper.requirements if additional_requirements is not None: requirements += additional_requirements requirements = RequirementAnalyzer.analyze(requirements) params = params or {} params[cls.PYTHON_VERSION] = params.get(cls.PYTHON_VERSION, get_python_version()) model = Model(name, wrapper, None, requirements, params, description) model._unpersisted_artifacts = artifact return model
def analyze(cls, obj: AnyRequirements) -> Requirements: """ Run RequirementHook hooks to analyze obj :param obj: objects to analyze :return: Instance of Requirements """ obj = resolve_requirements(obj) to_process = list(obj.requirements) result = [] for hook in cls.hooks: while len(to_process) > 0: req = to_process.pop() if hook.can_process(req): result += hook.process(req).requirements else: result.append(req) to_process = result result = [] return Requirements(to_process)
def test_resolve_str_list_arg(): req = ["dumb==0.4.1", "art==4.0"] actual_reqs = resolve_requirements(req) assert len(actual_reqs.installable) == 2 assert req == [r.to_str() for r in actual_reqs.installable]
def test_resolve_str_arg(): req = "dumb==0.4.1" actual_reqs = resolve_requirements(req) assert actual_reqs.installable[0].to_str() == req
def test_resolve_requirement_arg(): req = InstallableRequirement('dumb', '0.4.1') actual_reqs = resolve_requirements(req) assert actual_reqs.installable[0] == req