LSST Applications 27.0.0,g0265f82a02+469cd937ee,g02d81e74bb+21ad69e7e1,g1470d8bcf6+cbe83ee85a,g2079a07aa2+e67c6346a6,g212a7c68fe+04a9158687,g2305ad1205+94392ce272,g295015adf3+81dd352a9d,g2bbee38e9b+469cd937ee,g337abbeb29+469cd937ee,g3939d97d7f+72a9f7b576,g487adcacf7+71499e7cba,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+df404f777f,g5a732f18d5+be83d3ecdb,g64a986408d+21ad69e7e1,g858d7b2824+21ad69e7e1,g8a8a8dda67+a6fc98d2e7,g99cad8db69+f62e5b0af5,g9ddcbc5298+d4bad12328,ga1e77700b3+9c366c4306,ga8c6da7877+71e4819109,gb0e22166c9+25ba2f69a1,gb6a65358fc+469cd937ee,gbb8dafda3b+69d3c0e320,gc07e1c2157+a98bf949bb,gc120e1dc64+615ec43309,gc28159a63d+469cd937ee,gcf0d15dbbd+72a9f7b576,gdaeeff99f8+a38ce5ea23,ge6526c86ff+3a7c1ac5f1,ge79ae78c31+469cd937ee,gee10cc3b42+a6fc98d2e7,gf1cff7945b+21ad69e7e1,gfbcc870c63+9a11dc8c8f
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
lsst.dax.apdb.apdbSchema.ApdbSchema Class Reference
Inheritance diagram for lsst.dax.apdb.apdbSchema.ApdbSchema:
lsst.dax.apdb.cassandra.apdbCassandraSchema.ApdbCassandraSchema lsst.dax.apdb.sql.apdbSqlSchema.ApdbSqlSchema

Public Member Functions

 __init__ (self, str schema_file, str schema_name="ApdbSchema")
 
type|str column_dtype (self, felis.datamodel.DataType|ExtraDataTypes felis_type)
 
VersionTuple schemaVersion (self)
 

Public Attributes

 tableSchemas
 

Protected Member Functions

tuple[Mapping[ApdbTables, Table], VersionTuple|None] _buildSchemas (cls, str schema_file, str schema_name="ApdbSchema")
 

Protected Attributes

 _schemaVersion
 

Detailed Description

Class for management of APDB schema.

Attributes
----------
tableSchemas : `dict`
    Maps table name to `TableDef` instance.

Parameters
----------
schema_file : `str`
    Name of the YAML schema file.
schema_name : `str`, optional
    Name of the schema in YAML files.

Definition at line 99 of file apdbSchema.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.dax.apdb.apdbSchema.ApdbSchema.__init__ ( self,
str schema_file,
str schema_name = "ApdbSchema" )

Reimplemented in lsst.dax.apdb.cassandra.apdbCassandraSchema.ApdbCassandraSchema, and lsst.dax.apdb.sql.apdbSqlSchema.ApdbSqlSchema.

Definition at line 115 of file apdbSchema.py.

119 ):
120 # build complete table schema
121 self.tableSchemas, self._schemaVersion = self._buildSchemas(schema_file, schema_name)
122

Member Function Documentation

◆ _buildSchemas()

tuple[Mapping[ApdbTables, Table], VersionTuple | None] lsst.dax.apdb.apdbSchema.ApdbSchema._buildSchemas ( cls,
str schema_file,
str schema_name = "ApdbSchema" )
protected
Create schema definitions for all tables.

Reads YAML schema and builds a dictionary containing
`.schema_model.Table` instances for each table.

Parameters
----------
schema_file : `str`
    Name of YAML file with ``felis`` schema.
schema_name : `str`, optional
    Name of the schema in YAML files.

Returns
-------
tables : `dict`
    Mapping of table names to `.schema_model.Table` instances.
version : `VersionTuple` or `None`
    Schema version defined in schema file, `None` if version is not
    defined.

Definition at line 161 of file apdbSchema.py.

163 ) -> tuple[Mapping[ApdbTables, Table], VersionTuple | None]:
164 """Create schema definitions for all tables.
165
166 Reads YAML schema and builds a dictionary containing
167 `.schema_model.Table` instances for each table.
168
169 Parameters
170 ----------
171 schema_file : `str`
172 Name of YAML file with ``felis`` schema.
173 schema_name : `str`, optional
174 Name of the schema in YAML files.
175
176 Returns
177 -------
178 tables : `dict`
179 Mapping of table names to `.schema_model.Table` instances.
180 version : `VersionTuple` or `None`
181 Schema version defined in schema file, `None` if version is not
182 defined.
183 """
184 schema_file = os.path.expandvars(schema_file)
185 with open(schema_file) as yaml_stream:
186 schemas_list = list(yaml.load_all(yaml_stream, Loader=yaml.SafeLoader))
187 schemas_list = [schema for schema in schemas_list if schema.get("name") == schema_name]
188 if not schemas_list:
189 raise ValueError(f"Schema file {schema_file!r} does not define schema {schema_name!r}")
190 elif len(schemas_list) > 1:
191 raise ValueError(f"Schema file {schema_file!r} defines multiple schemas {schema_name!r}")
192 felis_schema = felis.datamodel.Schema.model_validate(schemas_list[0])
193 schema = Schema.from_felis(felis_schema)
194
195 # convert all dicts into classes
196 tables: MutableMapping[ApdbTables, Table] = {}
197 for table in schema.tables:
198 try:
199 table_enum = ApdbTables(table.name)
200 except ValueError:
201 # There may be other tables in the schema that do not belong
202 # to APDB.
203 continue
204 else:
205 tables[table_enum] = table
206
207 version: VersionTuple | None = None
208 if schema.version is not None:
209 version = VersionTuple.fromString(schema.version.current)
210
211 return tables, version

◆ column_dtype()

type | str lsst.dax.apdb.apdbSchema.ApdbSchema.column_dtype ( self,
felis.datamodel.DataType | ExtraDataTypes felis_type )
Return Pandas data type for a given Felis column type.

Parameters
----------
felis_type : `felis.datamodel.DataType`
    Felis type, on of the enums defined in `felis.datamodel` module.

Returns
-------
column_dtype : `type` or `str`
    Type that can be used for columns in Pandas.

Raises
------
TypeError
    Raised if type is cannot be handled.

Definition at line 123 of file apdbSchema.py.

123 def column_dtype(self, felis_type: felis.datamodel.DataType | ExtraDataTypes) -> type | str:
124 """Return Pandas data type for a given Felis column type.
125
126 Parameters
127 ----------
128 felis_type : `felis.datamodel.DataType`
129 Felis type, on of the enums defined in `felis.datamodel` module.
130
131 Returns
132 -------
133 column_dtype : `type` or `str`
134 Type that can be used for columns in Pandas.
135
136 Raises
137 ------
138 TypeError
139 Raised if type is cannot be handled.
140 """
141 try:
142 return _dtype_map[felis_type]
143 except KeyError:
144 raise TypeError(f"Unexpected Felis type: {felis_type}")
145

◆ schemaVersion()

VersionTuple lsst.dax.apdb.apdbSchema.ApdbSchema.schemaVersion ( self)
Return schema version as defined in YAML schema file.

Returns
-------
version : `VersionTuple`
    Version number read from YAML file, if YAML file does not define
    schema version then "0.1.0" is returned.

Definition at line 146 of file apdbSchema.py.

146 def schemaVersion(self) -> VersionTuple:
147 """Return schema version as defined in YAML schema file.
148
149 Returns
150 -------
151 version : `VersionTuple`
152 Version number read from YAML file, if YAML file does not define
153 schema version then "0.1.0" is returned.
154 """
155 if self._schemaVersion is None:
156 return VersionTuple(0, 1, 0)
157 else:
158 return self._schemaVersion
159

Member Data Documentation

◆ _schemaVersion

lsst.dax.apdb.apdbSchema.ApdbSchema._schemaVersion
protected

Definition at line 121 of file apdbSchema.py.

◆ tableSchemas

lsst.dax.apdb.apdbSchema.ApdbSchema.tableSchemas

Definition at line 121 of file apdbSchema.py.


The documentation for this class was generated from the following file: