pubtools¶
This module provides features for handling public (global) project data.
Module pubtools implements the following members:
TimegridsPropertyDefaultPropertyspecialised forTimegridsobjects.
PubBase class of the singleton module instancepub.
- class hydpy.core.pubtools.TimegridsProperty[source]¶
Bases:
_PubProperty[Timegrids|Timegrid|tuple[datetime|str|Date,datetime|str|Date,timedelta|str|Period],Timegrids]DefaultPropertyspecialised forTimegridsobjects.For convenience, property
TimegridsPropertycan create aTimegridsobject from a combination of a first and last date (of typestrorDate) and a step size (of typestrorPeriod):>>> 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
Timegridsobject 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:
ModuleTypeBase class of the singleton module instance
pub.You can import
publike “normal” modules:>>> from hydpy import pub
However, if you try to access unprepared attributes,
Pubreturns 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
Timegridsobjects 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
projectnamelets all file managers handled by thepubmodule 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¶
DefaultPropertyspecialised forTimegridsobjects.For convenience, property
TimegridsPropertycan create aTimegridsobject from a combination of a first and last date (of typestrorDate) and a step size (of typestrorPeriod):>>> 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
Timegridsobject 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'