pubtools¶
This module provides features for handling public (global) project data.
Module pubtools
implements the following members:
TimegridsProperty
DefaultProperty
specialised forTimegrids
objects.
Pub
Base class of the singleton module instancepub
.
- class hydpy.core.pubtools.TimegridsProperty[source]¶
Bases:
_PubProperty
[Timegrids
|Timegrid
|tuple
[Date
|datetime
|str
,Date
|datetime
|str
,Period
|timedelta
|str
],Timegrids
]DefaultProperty
specialised forTimegrids
objects.For convenience, property
TimegridsProperty
can create aTimegrids
object from a combination of a first and last date (of typestr
orDate
) and a step size (of typestr
orPeriod
):>>> 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
, thesim
, and theeval_
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¶
The name of the current project and the project’s root directory.
One can manually set
projectname
:>>> from hydpy import create_projectstructure, HydPy, pub, TestIO >>> pub.projectname = "project_A"
However, the usual way is to pass the project name to the constructor of class
HydPy
, which automatically setsprojectname
:>>> hp = HydPy("project_B") >>> pub.projectname 'project_B'
Changing
projectname
lets all file managers handled by thepub
module forget their eventually previously memorised but now outdated working directories:>>> with TestIO(clear_all=True), pub.options.printprogress(True): ... create_projectstructure("project_B") ... for idx, filemanager in enumerate(pub.filemanagers): ... filemanager.currentdir = f"dir_{idx}" Directory ...project_B...dir_0 has been created. Directory ...project_B...dir_1 has been created. Directory ...project_B...dir_2 has been created. Directory ...project_B...dir_3 has been created.
>>> pub.projectname = "project_C" >>> import os >>> with TestIO(clear_all=True), pub.options.printprogress(True): ... create_projectstructure("project_C") ... os.makedirs("project_C/conditions/test") ... for filemanager in pub.filemanagers: ... _ = filemanager.currentdir The name of the network manager's current working directory has not been previously defined and is hence set to `default`. Directory ...project_C...default has been created. The name of the control manager's current working directory has not been previously defined and is hence set to `default`. Directory ...project_C...default has been created. The name of the condition manager's current working directory has not been previously defined and is hence set to `test`. The name of the sequence manager's current working directory has not been previously defined and is hence set to `default`. Directory ...project_C...default has been created.
- indexer¶
- networkmanager¶
- controlmanager¶
- conditionmanager¶
- sequencemanager¶
- timegrids¶
DefaultProperty
specialised forTimegrids
objects.For convenience, property
TimegridsProperty
can create aTimegrids
object from a combination of a first and last date (of typestr
orDate
) and a step size (of typestr
orPeriod
):>>> 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
, thesim
, and theeval_
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¶
- 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'