gemseo / core

factory module

Factory base class.

Classes:

Factory(*args, **kwargs)

Factory of class objects with cache.

class gemseo.core.factory.Factory(*args, **kwargs)[source]

Bases: object

Factory of class objects with cache.

This factory can create an object from a base class or any of its sub-classes that can be imported from the given modules sources. There are 3 sources of modules that can be searched:

  • fully qualified module names (such as gemseo.problems, …),

  • the environment variable “GEMSEO_PATH” may contain the list of directories,

  • GEMSEO plugins, i.e. packages which have declared a setuptools entry point.

A setuptools entry point is declared in a plugin setup.cfg file, with a section:

[options.entry_points]
gemseo_plugins =
    a-name = plugin_package_name

Above a-name is not used and can be any name but we advise to use the plugin name.

The plugin entry point searched by the factory could be changed with Factory.PLUGIN_ENTRY_POINT.

If a class, despite being a sub-class of the base class, or even the base class itself, does not belong to the modules sources then it is not taken into account by the factory.

The created objects are cached: more calls to the constructor with the same call signature will return the object in cache instead of instantiating a new one.

Parameters
  • base_class – The base class to be considered.

  • module_names – The fully qualified modules names to be searched.

Attributes:

PLUGIN_ENTRY_POINT

classes

Return the available classes.

Methods:

cache_clear()

create(class_name, **options)

Return an instance of a class.

get_class(name)

Return a class from its name.

get_default_options_values(name)

Return the constructor kwargs default values of a class.

get_default_sub_options_values(name, **options)

Return the default values of the sub options of a class.

get_options_doc(name)

Return the constructor documentation of a class.

get_options_grammar(name[, write_schema, ...])

Return the options JSON grammar for a class.

get_sub_options_grammar(name, **options)

Return the JSONGrammar of the sub options of a class.

is_available(name)

Return whether a class can be instantiated.

update()

Search for the classes that can be instantiated.

PLUGIN_ENTRY_POINT = 'gemseo_plugins'
static cache_clear()[source]
property classes

Return the available classes.

Returns

The sorted names of the available classes.

create(class_name, **options)[source]

Return an instance of a class.

Parameters
  • class_name (str) – The name of the class.

  • **options (Any) – The arguments to be passed to the class constructor.

Returns

The instance of the class.

Raises

TypeError – If the class cannot be instantiated.

Return type

Any

get_class(name)[source]

Return a class from its name.

Parameters

name (str) – The name of the class.

Returns

The class.

Raises

ImportError – If the class is not available.

Return type

Type[Any]

get_default_options_values(name)[source]

Return the constructor kwargs default values of a class.

Parameters

name (str) – The name of the class.

Returns

The mapping from the argument names to their default values.

Return type

Dict[str, Union[str, int, float, bool]]

get_default_sub_options_values(name, **options)[source]

Return the default values of the sub options of a class.

Parameters
  • name (str) – The name of the class.

  • **options (str) – The options to be passed to the class required to deduce the sub options.

Returns

The JSON grammar.

Return type

gemseo.core.grammars.json_grammar.JSONGrammar

get_options_doc(name)[source]

Return the constructor documentation of a class.

Parameters

name (str) – The name of the class.

Returns

The mapping from the argument names to their documentation.

Return type

Dict[str, str]

get_options_grammar(name, write_schema=False, schema_file=None)[source]

Return the options JSON grammar for a class.

Attempt to generate a JSONGrammar from the arguments of the __init__ method of the class.

Parameters
  • name (str) – The name of the class.

  • write_schema (bool) –

    If True, write the JSON schema to a file.

    By default it is set to False.

  • schema_file (Optional[str]) –

    The path to the JSON schema file. If None, the file is saved in the current directory in a file named after the name of the class.

    By default it is set to None.

Returns

The JSON grammar.

Return type

gemseo.core.grammars.json_grammar.JSONGrammar

get_sub_options_grammar(name, **options)[source]

Return the JSONGrammar of the sub options of a class.

Parameters
  • name (str) – The name of the class.

  • **options (str) – The options to be passed to the class required to deduce the sub options.

Returns

The JSON grammar.

Return type

gemseo.core.grammars.json_grammar.JSONGrammar

is_available(name)[source]

Return whether a class can be instantiated.

Parameters

name (str) – The name of the class.

Returns

Whether the class can be instantiated.

Return type

bool

update()[source]

Search for the classes that can be instantiated.

The search is done in the following order:
  1. The fully qualified module names

  2. The plugin packages

  3. The packages from the environment variables

Return type

None