pubtools

This module provides features for handling public (global) project data.

Module pubtools implements the following members:


class hydpy.core.pubtools.TimegridsProperty[source]

Bases: _PubProperty[Timegrids | Timegrid | tuple[Date | datetime | str, Date | datetime | str, Period | timedelta | str], Timegrids]

DefaultProperty specialised for Timegrids objects.

For convenience, property TimegridsProperty can create a Timegrids object from a combination of a first and last date (of type str or Date) and a step size (of type str or Period):

>>> from hydpy import pub, Timegrid, Timegrids
>>> pub.timegrids = "2000-01-01", "2010-01-01", "1d"

The given date and period information applies for the init, the sim, and the eval_ attribute:

>>> pub.timegrids.init
Timegrid("2000-01-01 00:00:00",
         "2010-01-01 00:00:00",
         "1d")
>>> pub.timegrids.sim
Timegrid("2000-01-01 00:00:00",
         "2010-01-01 00:00:00",
         "1d")
>>> pub.timegrids.eval_
Timegrid("2000-01-01 00:00:00",
         "2010-01-01 00:00:00",
         "1d")

Alternatively, you can assign a ready Timegrids object directly:

>>> pub.timegrids = Timegrids(Timegrid("2000-01-01", "2010-01-01", "1d"),
...                           Timegrid("2000-01-01", "2001-01-01", "1d"))
>>> pub.timegrids
Timegrids(init=Timegrid("2000-01-01 00:00:00",
                        "2010-01-01 00:00:00",
                        "1d"),
          sim=Timegrid("2000-01-01 00:00:00",
                       "2001-01-01 00:00:00",
                       "1d"),
          eval_=Timegrid("2000-01-01 00:00:00",
                         "2001-01-01 00:00:00",
                         "1d"))
call_fset(obj: Any, value: timetools.Timegrids | timetools.Timegrid | tuple[timetools.DateConstrArg, timetools.DateConstrArg, timetools.PeriodConstrArg]) None[source]

Try to convert the given input value(s).

class hydpy.core.pubtools.Pub(name: str, doc: str | None = None)[source]

Bases: ModuleType

Base class of the singleton module instance pub.

You can import pub like “normal” modules:

>>> from hydpy import pub

However, if you try to access unprepared attributes, Pub returns the following error message:

>>> pub.timegrids
Traceback (most recent call last):
...
hydpy.core.exceptiontools.AttributeNotReady: Attribute timegrids of module `pub` is not defined at the moment.

After setting an attribute value successfully, it is accessible (we select the timegrids attribute here, as its setter supplies a little magic to make defining new Timegrids objects more convenient:

>>> pub.timegrids = None
Traceback (most recent call last):
...
ValueError: While trying to define a new `Timegrids` object based on the arguments `None`, the following error occurred: Initialising a `Timegrids` object either requires one, two, or three `Timegrid` objects or two dates objects (of type `Date`, `datetime`, or `str`) and one period object (of type `Period`, `timedelta`, or `str`), but objects of the types `None, None, and None` are given.
>>> pub.timegrids = "2000-01-01", "2001-01-01", "1d"
>>> pub.timegrids
Timegrids("2000-01-01 00:00:00",
          "2001-01-01 00:00:00",
          "1d")

After deleting it, the attribute is no longer accessible:

>>> del pub.timegrids
>>> pub.timegrids
Traceback (most recent call last):
...
hydpy.core.exceptiontools.AttributeNotReady: Attribute timegrids of module `pub` is not defined at the moment.
config: configutils.Config
projectname
indexer
networkmanager
controlmanager
conditionmanager
sequencemanager
timegrids

DefaultProperty specialised for Timegrids objects.

For convenience, property TimegridsProperty can create a Timegrids object from a combination of a first and last date (of type str or Date) and a step size (of type str or Period):

>>> from hydpy import pub, Timegrid, Timegrids
>>> pub.timegrids = "2000-01-01", "2010-01-01", "1d"

The given date and period information applies for the init, the sim, and the eval_ attribute:

>>> pub.timegrids.init
Timegrid("2000-01-01 00:00:00",
         "2010-01-01 00:00:00",
         "1d")
>>> pub.timegrids.sim
Timegrid("2000-01-01 00:00:00",
         "2010-01-01 00:00:00",
         "1d")
>>> pub.timegrids.eval_
Timegrid("2000-01-01 00:00:00",
         "2010-01-01 00:00:00",
         "1d")

Alternatively, you can assign a ready Timegrids object directly:

>>> pub.timegrids = Timegrids(Timegrid("2000-01-01", "2010-01-01", "1d"),
...                           Timegrid("2000-01-01", "2001-01-01", "1d"))
>>> pub.timegrids
Timegrids(init=Timegrid("2000-01-01 00:00:00",
                        "2010-01-01 00:00:00",
                        "1d"),
          sim=Timegrid("2000-01-01 00:00:00",
                       "2001-01-01 00:00:00",
                       "1d"),
          eval_=Timegrid("2000-01-01 00:00:00",
                         "2001-01-01 00:00:00",
                         "1d"))
selections
options: optiontools.Options
scriptfunctions: dict[str, Callable[..., int | None]]
property filemanagers: Iterator[FileManager]

Yield all file managers.

>>> from hydpy import HydPy, pub
>>> hp = HydPy("test")
>>> for filemanager in pub.filemanagers:
...     type(filemanager).__name__
'NetworkManager'
'ControlManager'
'ConditionManager'
'SequenceManager'